我期待構建一個Windows窗體組合框,它具有正常的着色,並允許顯示下拉列表,但不允許實際更改該值。據我所知,這不是How to make Combobox in winforms readonly的重複,因爲所有的建議似乎都指向禁用組合框的交互性。只讀(但可拖拽)組合框
我的理由:我有一個表單,所有的控件都是隻讀的,由於應用程序的性質,我認爲當組合框的值不會改變時,用戶不會感到困惑。我希望用戶能夠看到組合框所綁定的枚舉的所有可能值。
我有什麼到目前爲止是一個非常糟糕的黑客:
public partial class ReadOnlyComboBox : ComboBox
{
int prevIndex = -1;
public ReadOnlyComboBox()
{
InitializeComponent();
}
private void ReadOnlyComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (prevIndex <= 0)
prevIndex = SelectedIndex;
else
SelectedIndex = prevIndex;
}
}
實際上,這忽略來自框架虛假「0」值,並採取有約束力的來源取得的第一個非零值。立即的缺點是,該值可能只設置一次,並且綁定枚舉必須從1開始。
任何關於清理這個問題的建議都是值得歡迎的。謝謝。
要清楚,用「DropDownStyle」屬性正常組合框設置爲「DropDownList的」是不是你想要的,對嗎? – Inisheer 2011-03-27 18:46:54
其實我除了需要上面的DropDownList。 – Reinderien 2011-03-27 19:04:26
好吧,所以DropDownList顯示不可編輯的項目。爲了防止變化,它最初是如何填充的......從另一個過程,例如更新狀態/正在進行的工作?或者,是否希望用戶能夠在首次創建記錄時進行編輯,並防止用戶在初始創建值設置後進行更改。 – DRapp 2011-03-29 15:58:38