2011-01-08 15 views
0

この単純なコードを実装するとエラーが発生します。私はどこで間違いをしているのか分からない。デアObjektverweis wurde NICHTアウフアイネObjektinstanz festgelegt:NullReferenceException画像のコピー/貼り付け時に

// ERROR

'System.NullReferenceException' 種類の未処理の例外がImageCSharp.exe
で発生しました追加情報。

私はクリップボードのテキストを取得できますが、なぜ私はイメージを取得/設定できません。 // CODE

public void copy() 
    { 
     // Determine the active child form. 
     fImage activeChild = this.ActiveMdiChild as fImage; 
     if (activeChild != null) 
     { 
      PictureBox mypicbox = activeChild.picbox; 
      string win_name = activeChild.Tag.ToString(); 
      Clipboard.SetImage(mypicbox.Image); 
      Clipboard.SetText(win_name); 

     } 
    } 

    private void paste() 
    { 

     Image im= Clipboard.GetImage(); 
     this.pictureBox1.Image = im; 
     MessageBox.Show(im.Size.ToString()); 

    } 

に関して、

+4

例外をスローする行はありますか?まずはおおよそ –

答えて

1
Clipboard.SetText(win_name); 

これはクリップボードからイメージをダンプしますが、1つのアイテムしか保持できません。問題を解決するために行を削除してください。そして守備コード:

private void paste() { 
     if (Clipboard.ContainsImage()) { 
      Image im = Clipboard.GetImage(); 
      if (this.pictureBox1.Image != null) this.pictureBox1.Dispose(); 
      this.pictureBox1.Image = im; 
     } 
    } 

クリップボード上の情報の両方の部分を取得するには、最初にこの情報を保存するために小さなヘルパークラスを宣言します。例:

[Serializable] 
    private class Clipdata { 
     public Image Image { get; set; } 
     public string Name { get; set; } 
    } 

    private void CopyButton_Click(object sender, EventArgs e) { 
     var data = new Clipdata { Image = pictureBox1.Image, Name = textBox1.Text }; 
     Clipboard.SetDataObject(data); 
    } 
    private void PasteButton_Click(object sender, EventArgs e) { 
     string fmt = typeof(Clipdata).FullName; 
     if (Clipboard.ContainsData(fmt)) { 
      var data = (Clipdata)Clipboard.GetDataObject().GetData(fmt); 
      if (pictureBox1.Image != null) pictureBox1.Image.Dispose(); 
      pictureBox1.Image = data.Image; 
      textBox1.Text = data.Name; 
     } 
    } 
+0

thanx.youが正しいです。しかし、これは私が問題を抱えているところです。私はwin_nameと同様に画像が必要です。どうすればいいですか? (それに答えるPLeaseより) – Shahgee

+0

@sayyad - 更新されたポスト。他のアプリに貼り付ける機能を失うことに注意してください。 –

1

ないあなたの質問への答えが、次の

は、画像だけでなく、クリップボードにテキストを設定しません。すなわち、あなたのコードは、テキストが続く上記のコードは、クリップボードに画像を設定しようとしているクリップボード

Clipboard.SetImage(mypicbox.Image); 
Clipboard.SetText(win_name); 

にテキストを設定します。
つまり、クリップボードにはアイテムごとにテキストが1つ含まれます。

そして、画像がクリップボードにあることを期待しているpasteのコードがMessageBox.Show(img.Size.ToString());に例外を投げていると仮定します。

+0

。あなたとハンスは正しいです。しかし、これは私が問題を抱えているところです。私はwin_nameと同様に画像が必要です。どうすればいいですか? (pleaseはそれ以上の答えになります) – Shahgee

関連する問題