我試圖建立一個系統來檢查滑鼠是否在 winforms 應用程式中被點擊,并最終這樣做了
private void lblChips_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
}
private void lblChips_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
八次以上(對于每個標簽)。
有誰知道是否有更有效的方法來做到這一點?我嘗試使用
private void frmGame4_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
}
private void frmGame4_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
但這不起作用。任何幫助將不勝感激。
uj5u.com熱心網友回復:
您可以創建兩種方法,一種用于滑鼠向上,一種用于滑鼠向下,如下所示:
private void labels_mouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
}
private void labels_mouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
然后,將所有標簽鏈接到這些方法。您也可以從代碼中執行此操作:
label.mouseDown = labels_mouseDown;
label.mouseUp = labels_mouseUp;
這必須在 InitializeComponent() 下的某處完成;方法。您仍然必須為每個標簽執行此操作,但最終代碼更少。
uj5u.com熱心網友回復:
這個
public Form1()
{
InitializeComponent();
CollectFormControls(this);
ControlList.Add(this);
MergeEvents();
}
List<Control> ControlList = new List<Control>();
private void CollectFormControls(Control c)
{
foreach (Control control in c.Controls)
{
ControlList.Add(control);
CheckSubControls(control);
}
}
private void CheckSubControls(Control control)
{
if (control.Controls.Count > -1)
{
CollectFormControls(control);
}
}
private void MergeEvents()
{
for (int i = 0; i < ControlList.Count; i )
{
ControlList[i].MouseDown = All_MouseDown;
ControlList[i].MouseUp = All_MouseUp;
}
}
public void All_MouseUp(object sender, MouseEventArgs e)
{
this.Text = "up";
}
public void All_MouseDown(object sender, MouseEventArgs e)
{
this.Text = "down";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/339217.html
