我正在Visual C++中使用Visual Studio開發Windows窗體應用程序。我的表單上有96個複選框。與其創建96個Click事件,我相信有一種方法可以創建單擊任何複選框時調用的Click事件。在Click事件中,我需要確定活動複選框是否已選中或未選中。雖然這應該很容易,但我似乎無法弄清楚!確定是否在Winforms中選中活動複選框
我知道它與下面的代碼一起工作,但我確信有更好的方法。
if (sender == checkBox_D1)
{
if (checkBox_D1->Checked)
isChecked = true;
}
else if (sender == checkBox_D2)
{
if (checkBox_D2->Checked)
isChecked = true;
}
else
return; // Invalid sender - should not get here!
if (isChecked)
{
// Do something
}
else
{
// Do something else
}
我也試過下面的代碼,但activeCheckBox不是複選框對象,所以它不起作用。
Control^activeCheckBox = ActiveControl;
activeCheckBox->正文返回的複選框
activeCheckBox->經過不編譯Text屬性。錯誤是'檢查':不是'System :: Windows :: Forms :: Control'的成員
似乎發件人有我需要的數據,但我不知道如何訪問它。
有沒有辦法按如下方式聲明覆選框?
CheckBox activeBox;
然後將activeBox分配給具有焦點的複選框 activeBox = ???
// Then just need to do this!
if (activeBox.Checked)
isChecked = true;
謝謝你的幫助。
嗨EJD,謝謝你看我的問題和你的答覆。當我編譯CheckBox activeCheckBox =(CheckBox)發件人時出現錯誤;在你的例子中,發送者是作爲類型對象傳遞的。我正在使用Winforms,並且發件人作爲System :: Object ^傳遞。錯誤是C2440和C3673。謝謝! –
什麼是錯誤?我沒有注意到你正在使用visual-++,這個想法仍然是你需要將發件人投遞到CheckBox的想法。 – EJD
我得到兩個錯誤:C2440:'type cast':無法從'System :: Object ^'轉換爲'System :: Windows :: Forms :: CheckBox' 1>轉換需要構造函數或用戶定義的轉換運算符,它不能被const_cast使用或reinterpret_cast 錯誤C3673:'System :: Windows :: Forms :: CheckBox':類沒有複製構造函數 –