下拉列表(列表)ComboBox控件字段选项C#

时间:2017-06-26 15:06:23

标签: c# drop-down-menu combobox

我使用ComboBox DropDown来显示可以选择的多个项目。我还使用默认文本“选择项目”。除了我从列表中选择一个项目后,我可以选择文本并将其删除(使用退格键),以便所选项目的区域为空白(参见image)。

我想阻止这种情况,或者在不可能的情况下,再次显示默认文本。后者到目前为止无效,所以我尝试了DropDownList,但整个列表的背景变为灰色。如果我然后在OwnerDrawFixed中选择OwnerDrawVariableDrawMode,则背景会再次变为白色,但字体颜色也会变为白色(而不是黑色)。

我发现我必须使用DrawItem来更改布局,但即使这样也行不通。我只想要与我在DropDown中指出的风格相同。有谁知道如何做到这一点或在哪里找到已经回答的类似问题?

2 个答案:

答案 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