我使用ComboBox
DropDown
来显示可以选择的多个项目。我还使用默认文本“选择项目”。除了我从列表中选择一个项目后,我可以选择文本并将其删除(使用退格键),以便所选项目的区域为空白(参见image)。
我想阻止这种情况,或者在不可能的情况下,再次显示默认文本。后者到目前为止无效,所以我尝试了DropDownList
,但整个列表的背景变为灰色。如果我然后在OwnerDrawFixed
中选择OwnerDrawVariable
或DrawMode
,则背景会再次变为白色,但字体颜色也会变为白色(而不是黑色)。
我发现我必须使用DrawItem
来更改布局,但即使这样也行不通。我只想要与我在DropDown
中指出的风格相同。有谁知道如何做到这一点或在哪里找到已经回答的类似问题?
答案 0 :(得分:0)
这样的事情怎么样? 您还可以尝试将DropDownStyle设置为DropDownList,将FlatStyle设置为Flat。这会给你一个稍微不同的结果。
private void InitialiseCombo(ComboBox combo)
{
combo.Items.Clear();
combo.Items.AddRange(new object[] { 3391200121, 3391200122 });
combo.DropDownStyle = ComboBoxStyle.DropDown;
combo.Text = "Select Item";
combo.KeyPress += combo_KeyPress;
}
void combo_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
答案 1 :(得分:0)
建议的解决方案没有做到这一点,但我找到了初始问题的解决方法,即手动删除ComboBox文本,所以我只是把它放在这里以防其他人有同样的问题。使用时
// +build !race
// Package israce reports if the Go race detector is enabled.
package israce
// Enabled reports if the race detector is enabled.
const Enabled = false
我可以自己设置限制:如果文本为空,则应显示默认文本。如果键入的文本等于ComboBox中的项目之一,则应将selectedItem设置为等于键入的文本。
我还包括MyComboBox_TextChanged(object sender, EventArgs e)
和GotFocus
Leave
。