0

FlowLayoutパネルにピクチャ ボックスを追加し、ContextMenuストリップ (ピクチャ ボックスに関連付けられている) に'Add description'アイテムを追加しました。

を右クリックしてPictureBoxを選択すると'Add description'、画像の大きなプレビューと説明を入力するテキスト ボックスが表示された新しいフォームが表示されます。

新しいフォームを閉じた後、ユーザーが書いたテキストを保存するにはどうすればよいですか?ユーザーが説明を編集したい場合、最初から入力する必要はありません。

説明をどこかに保存し、ユーザーが同じ画像をもう一度クリックしたときにフォームにロードする必要があると考えましたが、どの画像をクリックしたかを知るにはどうすればよいですか?

もっとスマートな方法があるかもしれませんが、今は思いつきません。

4

1 に答える 1

0

Tagプロパティを使用して、画像の説明情報を保持できるはずです。

オン コンテキストを識別するには、イベントPictureBoxを利用できます。MouseEnter基本的にクラスレベルのPictureBox変数を定義します(PictureBoxOnContext)。

MouseEnter次に、イベント ハンドラーをインスタンスに追加し、を aPictureBoxにキャストして変数に割り当てることができます。senderPictureBoxPictureBoxOnContext

を右クリックするとPictureBoxMouseEnterすでにトリガーされており、関連PictureBoxする変数が選択されていPictureBoxOnContextます。

次に、[説明の追加] コンテキスト メニューをクリックして、確認PictureBoxOnContext != nullし、これをプレビュー フォームに渡すことができます。

(残りは理解できるはずです。おそらくデリゲートを使用して情報を親フォームに返します)

private PictureBox PictureBoxOnContext;

private void AddPicture_Click(object sender, EventArgs e)
{
  PictureBox picBox = new PictureBox();   
  //Your code logic to add PictureBox to FlowLayout 

  picBox.MouseEnter += new EventHandler(PictueBox_MouseEnter);

}

void PictueBox_MouseEnter(object sender, EventArgs e)
{
   PictureBoxOnContext = (PictureBox)sender;
}


private void AddDescriptionToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (PictureBoxOnContext != null)
    {
        //Pass this PictureBoxOnContext to your preview window/ your opearations

    PictureBoxOnContext = null;

    } 
}
于 2012-05-27T03:29:06.167 に答える