2017-08-17 34 views
-3

ListViewボックスには、最後の 列に画像のパスを格納した5つの列があります。私の望みは画像パスにアクセスし、 をlistView1_MouseClickイベントハンドラに送信することです。私はいくつかの選択肢を試しましたが、イベントハンドラに関する私の限られた知識のために望ましい結果を生み出した人はいません。誰かが私の探求と感謝を手伝ってくれたら、とても感謝しています!以下余分な引数をイベントハンドラに渡す

は二つの手順です: -

public string GetImageDetailsHandler(object sender, EventArgs e){ 
     return(listView1.SelectedItems[0].SubItems[4].ToString()); 

} 

private void listView1_MouseClick(object sender, MouseEventArgs e){ 
    ImageForm image = new ImageForm(); 

    MouseClick += (sender, e) => { GetImageDetailsHandler(sender, e); }; 
    image.pictureBox1.Image = Image.FromFile(GetImageDetailsHandler); 

    image.ShowDialog(); 
} 
+0

私はあなたがここで達成することを望んでいるのを見ることができませんか?私はなぜあなたが 'GetImageDetailsHandler'にあなたがそれらに渡したいパラメータを持っているべきなのか見ていません。あなたがそれらを使用していないので、あなたの' MouseClick'構造はどこにも渡していないので無用です。デリゲートを行うと、リストビューをクリックするほど長くなるほど頻繁にトリガされます。何をしようとしていますか? – Icepickle

答えて

1

あなたはlistViewをクリックしたときにイベントMouseClickが発生します。その後、メソッドlistView1_MouseClickが実行されます。何が必要ただ、このメソッド内でパスを引き出すために単純です:

private void listView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    ImageForm image = new ImageForm(); 

    string path = listView1.SelectedItems[0].SubItems[4].ToString() 
    image.pictureBox1.Image = Image.FromFile(path); 

    image.ShowDialog(); 
} 

詳細な問題の説明:

1)あなたはこの行のMouseClickとイベント登録:

MouseClick += (sender, e) => { GetImageDetailsHandler(sender, e); }; 

あなたを実際にMouseClickのイベントを登録してください。Form! GUIのどこかをクリックするたびにGetImageDetailsHandlerが呼び出されます。

2)戻り値はstring GetImageDetailsHandler(..)ですが、どこにもキャッチしません。あなたの価値は失われます。実際にイベントの戻り値を使用する場合は、this postをご覧ください。しかし、これを達成するには、自分でイベントを起こす必要があります!あなたの場合はそうではありません。イベントはコントロールによって生成されます。

+0

こんにちは、お母さん...あなたの助けとアドバイスありがとう、ありがとう。私の思考プロセスは、本当に私が実際にlistView1_MouseClickハンドラにパスを渡す必要があると信じるようになったので、まず、次のようなものを作成しました: - private void listView1_MouseClick(オブジェクト送信者、MouseEventArgs e、文字列パス)。 明らかにそれはうまくいかなかったので、私はインターネット上の解決策を探してオーバードライブに入り、私が提示したゴミを思いついた。それは簡単ではなかったことを知らなかった!もう一度ありがとう... –

+0

@ BOB.Gよろしくお願いします。イベントacrogbaticsを把握することは、タスクの中で最も簡単なことではありません。実際には、フォームの新しいMouseClickイベントをlistviewの各クリックに登録するコードを使用します。それぞれが追加されました!リストビューで3回クリックすると、MouseClicksイベントが登録され、フォーム上のどこかを一度クリックすると、メソッドGetImageDetailsHandler';が呼び出されます) –

+1

@ Mong ...もう一度ありがとう!うまくいけば、ある日、私はイベントとそのハンドラーのアクロバットの周りに頭を浮かべるでしょう。 –

関連する問題