0

SharpDevelop を使用して、Mainform.cs、Mainform.Designer.cs、および Program.cs ファイルを使用して単純な C# プログラムを作成しました。

その中で、次のような形式で Point(10,10) にラベルを追加しました。

l.Text="Welcome";
l.Location=new System.Drawing.Point(10,10);
l.Size=new System.Drawing.Size(100,100);
mainForm.Controls.Add(l);

次に、フォーム上でのマウスのクリックを識別するためのイベント ハンドラーを追加しました。ラベルをクリックしてテキストを変更するとき。

l.Text="Clicked";

ただし、(10,10) 未満のポイントをクリックした場合にのみテキストが変更されます。ウィンドウのどこかをクリックしたときにテキストを変更するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

2

もちろん、あなたとあなたのhandler両方のClickイベントに同じものを付けるのは問題ありませんが、ネストされた関係を持つコンテナをさらに追加するとどうなりますか? 次のようなを使用して解決策を探します。FormLabelglobal Click eventIMessageFilter

public partial class Form1 : Form, IMessageFilter {
   public Form1(){
     InitializeComponent();
     Application.AddMessageFilter(this);
     //Try this to see it in action
     GlobalClick += (s,e) => {
        l.Text = "Clicked";
     };
   }
   public event EventHandler GlobalClick;
   public bool PreFilterMessage(ref Message m){
     if(m.Msg == 0x202){//WM_LBUTTONUP
        EventHandler handler = GlobalClick;
        if(handler != null) handler(this, EventArgs.Empty);
     }
     return false;
   }
}
于 2013-09-21T17:25:30.613 に答える