我回答你的問題,這部分:
如何消除在單選按鈕上單擊兩次的需求?
您可以在下面的事件處理程序添加到三個單選按鈕在分組框中(其中的Checked屬性綁定到應用程序設置)的Click事件:
Private Sub RadioButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tomRadioButton.Click, dickRadioButton.Click, harryRadioButton.Click
If sender.Checked = False Then
sender.Checked = True
End If
End Sub
它的工作原理,甚至儘管在單擊它後需要半秒時間才能檢查未鎖定的RadioButton。
原因是在Surviving WinForms Databinding後的湍流Intelect的博客第5兩年前解釋(2008年)的問題(謝謝你,ohadsc,獲取相關鏈接):
第5 :不要綁定到點擊單選按鈕
我知道這將是多麼巨大的,如果你 可以只綁定無線電你幫 按鈕,一個枚舉屬性。我真的是 呢。你認爲你只是想把 掛鉤一些格式和解析事件 來轉換回你的枚舉,而 一切都會好的。如果它真的有效,它會很方便 。但是, WinForms只是不會被刪除。 現在有3個完整版本(或者是3.5 版本?),情況就是如此。 這是因爲事件順序,其中 不是MS可以去 切換,而不會導致開發人員的數千 得到真正奶酪 關閉。
真正的問題歸結爲 事實,不像其他控件的數據 性質,一個 單選按鈕的Checked屬性實際上並不改變 直到焦點離開單選按鈕。 並與所有的WinForms控制 焦點實際上並沒有離開單選 按鈕,直到焦點就轉移 陸續控制,而實際上直到 後的新 集中控制的Click事件已被解僱。結果這 ,因爲它涉及到無線電 按鈕,是,如果你嘗試綁定到 他們,在 數據源綁定的屬性實際上將一個 點擊滯後的 單選按鈕的視覺狀態。如果您只有兩個無線電按鈕,則數據源將爲 ,與可見狀態 完全相反,直到您單擊其他地方的 未觸發 引用這些數據源 屬性的操作。這可以使這個真正令人生氣的臭蟲追蹤下去。 我幾乎以爲我是幻覺。
現在,誠實地說,有可能 使它工作。但這是最糟糕的一種混合物。好吧,也許 這並不壞...但肯定是一個混亂的 黑客。對於確實應該 已經可用的東西,需要很多工作 。由於靠近我可以告訴 ,只有這樣,才能解決這個問題 不放棄 綁定機制是 本質上使自己的單選按鈕 控制,具有性能變化和 事件順序,實際上是有用的。 您可以從頭寫一個, 或子類單選按鈕並覆蓋 所有的事件邏輯的自定義 消息處理。
謝謝!這讓我朝着正確的方向前進。在vb.net中,它是My.Settings而不是Properties.Settings.Default,但除此之外,它完美地工作。我現在只有一個設置,並在Load和FormClosing事件中使用表單的公共屬性。 – CoderDennis 2009-06-01 23:37:06
在我的電腦上,關閉時不需要保存設置。它們會自動保存。唯一的問題是我必須點擊兩次。 – systemovich 2010-06-26 08:10:01