[英]Click event for .Net (Windows Forms) user control
這可能是一個非常簡單的問題,但由於某種原因,即使是正確的方法來 web 搜索答案也讓我望而卻步......
我正在嘗試創建一個包含一些標簽和進度條的用戶控件。 但是,我希望整個控件都有一個“單擊”事件,無論單擊控件內的哪個項目,都會引發該事件。 我創建了一個分配給每個控件的“HandleClick”過程:
private void HandleClick(object sender, EventArgs e)
{
// Call the callback function, if we were asked to
if (OnClick != null)
{
EventArgs ee = new EventArgs();
OnClick(this, ee);
}
else
{
MessageBox.Show("OnClick was null!");
}
}
在這種情況下,OnClick 是在控制級別定義的變量:
public new event EventHandler OnClick;
現在,這只適用於表單。 在一個 label 上,它顯示 MessageBox,然后在封閉表單上調用事件。 所有 rest 都顯示消息框。
我覺得這應該是顯而易見的,但是一個下午的挫敗感讓我覺得我錯過了一些不言而喻的東西,但是當我看到它時,我會覺得自己像個徹頭徹尾的小丑……誰能停止對我的愚蠢傻笑足夠長的時間來啟發我哪里出錯了?
對此感到抱歉 - 只是在有人用谷歌搜索它時給出答案......
如果您有興趣,這篇文章幫助解決了這個問題:用戶控制點擊 - Windows Forms ... 基本上,刪除 HandleClick 和屬性並替換這個屬性:
public new event EventHandler Click
{
add
{
base.Click += value;
foreach (Control control in Controls)
{
control.Click += value;
}
}
remove
{
base.Click -= value;
foreach (Control control in Controls)
{
control.Click -= value;
}
}
}
我從來沒有用 Windows Forms 嘗試過這個,但在其他 GUI 中,我放置了一個透明面板,覆蓋整個表單,這樣當您單擊“在表單上”時,事件實際上會轉到面板控件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.