我創建了一個用戶控件稱爲Toggle
一個形式,這是我的代碼,它Click事件不觸發自定義用戶控件
[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
內的點擊事件;這發生得很好。
但是,當我將Toggle
控件放在窗體上並嘗試將事件綁定到窗體上時,它不會觸發。
private void toggleSoundClick(object sender, EventArgs e) {
soundToggle = !soundToggle;
}
我確信,正確的方法是聯繫在一起的單擊事件在兩個我的用戶我的Designer.cs文件和我的形式
用戶控件:
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);
用戶控件的預期行爲是關閉toggleClick
(它確實),然後表單應該觸發toggleSoundClick
(它沒有)。我已經看到這種行爲對於我在同一個項目中設計和使用的其他用戶控件而言工作正常。
澄清:
我有一個用戶控件稱爲ServerDisplay
。我有綁的ServerDisplay
背景面板(在ServerDisplay的代碼)的單擊事件的方法,其示出了隨機的MessageBox:
private void ServerDisplay_Click(object sender, EventArgs e) {
MessageBox.Show("test");
}
然後,我有包含我的形式內的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
內),然後更新我在代碼中指定的標籤(來自表單的代碼)。這是預期的行爲,但它不適用於我的其他UserControl
。
你是如何連接事件?在代碼中還是在設計器中? – phoog
在設計器中(在事件設置[屬性窗格中的閃電圖標]中,並通過仔細檢查Designer.cs –
請在設計器中將實際訂閱您的事件的行發佈到toggleSoundClick。意外地訂閱錯誤的控件甚至是從設計者那裏做出來的形式並不罕見。 – TyCobb