我在Windows窗體項目中遇到特定窗體的問題。只有一種形式存在問題;還有其他幾個使用相同類型的引用,但沒有這個問題。Windows窗體控件不會被後面的代碼更新
問題是通過後面的代碼修改控件實際上並沒有在窗體上更新它們。通過將從數據庫中提取的值添加到組合框的Items集合(通過.Items.Add()
方法),設置要啓用或不啓用的文本框或複選框,設置文本框的文本或檢查的檢查狀態盒子...沒什麼作用。我已經試過註釋掉所有方法中的所有代碼,除了代碼之外,它們實際上爲某些控件設置了啓用狀態,以確保沒有其他任何東西在我不知情的情況下運行,但問題仍然存在。
如調試器顯示的那樣,更改啓用狀態的代碼肯定是命中的,並且啓用狀態設置正確,根據條件是正確還是錯誤。應該禁用的控件仍然是可編輯的,仍然看起來像是可編輯的。代碼最初是使用intellisense編寫的,可以自動填寫控件名稱,所以從後面的代碼鏈接到表單上的正確控件應該沒有任何問題。我也試着將表單放大並放在一個空白的面板中,並帶有一個新的文本框和複選框,並且通過相同的方法將面板設置爲啓用或禁用,並且當它運行時控件也不是由後面的代碼改變。
對我可能錯過的任何建議?這是Windows窗體的基本功能,我不知道可能是什麼問題,並且我無法通過谷歌搜索或搜索此網站找到任何類似的問題。
謝謝!
編輯:這是一個應該工作,但它不是的代碼示例。類似的代碼在其他一些形式上使用沒有問題。
如果選中了一個名爲chkDisable複選框,此事件上運行:
private void chkDisable_CheckedChanged(object sender, EventArgs e)
{
SetControlsEnabledStatus(!((CheckBox)sender).Checked);
}
private void SetControlsEnabledStatus(bool enabledStatus)
{
textBox1.Enabled = enabledStatus;
textBox2.Enabled = enabledStatus;
}
我敢肯定,100%,本次活動的接線是否正確,它正確,火災和其他文本框的Enabled狀態設置是否正確。沒有其他方法可以覆蓋這個未註釋的代碼。但是,只要單擊複選框後再次加載表單,文本框始終處於啓用狀態。
EDIT2:如果有人遇到這種針對自己的問題,這裏是什麼引起了我的問題:
我不得不從頭開始一個新的形式,最終得到這個追查。事實證明,在構造函數和FormLoad事件中都有對InitializeComponent()的調用。基本上,我創建了一個帶有相同控件的新窗體,只有Disable事件在運行,當我複製Load代碼時,Disable停止工作。
顯示你的代碼? – Likurg 2012-04-19 19:53:46
...可能是* .Designer .cs文件也是如此。 – Alan 2012-04-19 20:09:52
@Likurg,我已經添加了一個代碼示例。 – Greg 2012-04-19 20:35:00