[英]Click event not firing for custom UserControl on a form
我創建了一個名為Toggle
的UserControl,這是我的代碼
[DefaultEvent("Click")]
public partial class Toggle : UserControl {
public bool ToggleStatus { get { return toggleStatus; } }
private bool toggleStatus { get; set; }
public Toggle() {
InitializeComponent();
toggleStatus = true;
}
private void toggleClick(object sender, EventArgs e) {
if (toggleStatus) { // currently set as "true" or "on"
this.lblSwitch.Dock = DockStyle.Right;
this.pnlBackground.BackColor = System.Drawing.Color.Red;
toggleStatus = false;
} else { // currently set as "false" or "off"
this.lblSwitch.Dock = DockStyle.Left;
this.pnlBackground.BackColor = System.Drawing.Color.Green;
toggleStatus = true;
}
}
}
toggleClick
方法與UserControl
中控件的click事件相關; 這很好。
但是,當我將Toggle
控件放在窗體上並嘗試將事件綁定到該事件時,它不會觸發。
private void toggleSoundClick(object sender, EventArgs e) {
soundToggle = !soundToggle;
}
我已經確保正確的方法與UserControl和表單的Designer.cs文件中的click事件相關聯
用戶控件:
this.lblSwitch.Click += new System.EventHandler(this.toggleClick);
this.pnlBackground.Click += new System.EventHandler(this.toggleClick);
(我將其綁定到我的Toggle
上的兩個控件上,因為無論您單擊控件的哪個位置,我都希望它觸發)
形成:
this.tglSound.Click += new System.EventHandler(this.toggleSoundClick);
UserControl的預期行為是觸發toggleClick
(確實如此),然后窗體應觸發toggleSoundClick
(事實並非如此)。 我已經看到此行為對於我在同一項目中設計和使用的其他UserControl效果很好。
澄清:
我有一個稱為ServerDisplay
的UserControl。 我有一個方法綁定到ServerDisplay
的背景面板的click事件(在ServerDisplay
的代碼中),該事件顯示一個隨機的MessageBox:
private void ServerDisplay_Click(object sender, EventArgs e) {
MessageBox.Show("test");
}
然后,我的ServerDisplay
包含一個ServerDisplay
控件。 我也有一個與它的click事件相關的方法(在我的表單的代碼中)
private void serverDisplayClick(object sender, EventArgs e) {
if (loaded) {
ServerDisplay display = (ServerDisplay)sender;
this.lblLastServer.Text = "Last server joined was " + display.Server.Name + " at " + DateTime.Now.ToString("h:mm tt");
centerControl(this.lblLastServer);
}
}
當我單擊表單中的ServerDisplay
控件時,它將顯示MessageBox(來自ServerDisplay
內的ServerDisplay
),然后更新我在代碼中指定的標簽(表單中的代碼)。 這是預期的行為,但不適用於其他UserControl
。
我終於想通了! 我設置控件的方式,控件本身,一個填充整個背景的面板(我將其用作顏色),然后在第一個面板中使用另一個面板作為“開關”。
當我擺脫了第一個面板,僅將控件的背景用作顏色,將一個小的面板用作開關時,單擊背景可正常使用,但單擊“開關”面板則無法使用。 我想這會帶來更多的問題,我將不得不單獨回答這個問題,但至少我得到了答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.