2009-11-19 140 views
4

有沒有辦法以編程方式在複選框上生成單擊事件?我正在尋找一個相當於Button.PerformClick();以編程方式點擊複選框

+0

正在改變被檢查的財產,因爲傑夫建議不夠?你能詳細說明嗎? – 2009-11-19 15:54:00

+0

ASP.net或Windows窗體? – Fandango68 2017-03-30 03:15:25

回答

9

爲什麼你需要模擬點擊,這行代碼不適合你的需要?

myCheckBox.Checked = !myCheckBox.Checked; 

如果您需要在CheckBox的狀態變爲執行的邏輯,你應該使用CheckedChanged事件,而不是Click

private void CheckBox1_CheckedChanged(Object sender, EventArgs e) 
{ 
    MessageBox.Show("You are in the CheckBox.CheckedChanged event."); 
} 
+1

我發佈了這個,但問題是「點擊事件」。這不會生成點擊事件。 – 2009-11-19 15:53:07

+1

也許我會重構控件,並使用CheckedChanged事件......任何事情都會更容易。 – Grzenio 2009-11-19 15:59:31

+0

OP是否可以解釋爲什麼這是所選擇的答案,但實際上並沒有回答這個問題,即關閉onclick事件?! – Fandango68 2017-03-30 03:13:00

0

我不認爲你可以通過這種方式生成一個點擊事件,而無需直接調用checkBox_Click事件處理程序。但你可以這樣做:

checkBox.Checked = !checkBox.Checked; 

即使你這樣做,CheckedChanged處理程序仍然會被調用。

2

爲什麼要在CheckBox上生成一個Click事件?

如果你想切換它的值:

theCheckBox.Checked = !theCheckBox.Checked; 

如果要觸發連接到Click事件的一些功能,這是一個好主意,從Click事件處理程序移出代碼爲獨立的方法可以在任何地方被稱爲:

private void theCheckBox_Click(object sender, EventArgs e) 
{ 
    HandleCheckBoxClick((CheckBox)sender); 
} 

private void HandleCheckBoxClick(CheckBox sender) 
{ 
    // do what is needed here 
} 

當你設計這樣的代碼,你可以輕鬆地從任何地方調用的功能:

HandleCheckBoxClick(theCheckBox); 

相同的方法可以(也許應該)用於大多數控件事件處理程序;將盡可能多的代碼從事件處理程序中移出,並移入更可重用的方法中。

+0

我想測試一個令人討厭的窗體,它啓用了..._ Click事件處理程序中的一些包含控件。 – Grzenio 2009-11-19 15:57:54

+1

請注意 - 您不希望從CheckBox_Click和theCheckBox_CheckedChanged調用此方法,因爲在單擊該複選框時它將被調用兩次。 – 2009-11-19 15:57:59

+1

@Grzenio:啓用/禁用「Click」中的控件即使是CheckBox也不是一個好主意;如果'Checked'屬性是由代碼分配的呢?這不會觸發'Click'事件,並且UI將處於不一致的狀態。您應該讓該代碼作爲「CheckedChanged」事件的結果來執行。 – 2009-11-19 16:04:07

3

上面的那些解決方案調用Checkbox.CheckedChanged事件。

如果你想顯式調用Click事件,你可以這樣:

checkBox1_Click(checkBox1, null); 
+0

這應該是答案 – Fandango68 2017-03-30 03:13:27

0

你沒有指定什麼樣的CheckBox控件。 ASP.net還是Windows?

假設一個網絡複選框控件,這是從代碼隱藏內部使用JavaScript調用來關閉它的方式...

代碼調用後面

步驟1中的JavaScript函數添加JavaScript代碼

<script type="text/javascript" language="javascript"> 
    function Func() { 
     alert("hello!") 
    } 
</script> 

步驟2在WebForm中添加1腳本管理和添加1個按鈕太

第3步將此代碼添加到您的按鈕單擊事件中

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);