C# 下拉(列表)组合框控件字段选项C

C# 下拉(列表)组合框控件字段选项C,c#,drop-down-menu,combobox,C#,Drop Down Menu,Combobox,我使用一个组合框下拉列表来显示一些可以选择的项目。我还使用默认的文本选择项。它的工作原理完全不同于这样一个事实,即一旦我从列表中选择了一个项目,我就可以选择文本并使用退格将其删除,以便所选项目的区域为空白,请参见 我希望防止出现这种情况,或者在不可能的情况下,再次显示默认文本。后者目前还不起作用,所以我尝试了DropDownList,但是整个列表的背景变成灰色。如果在DrawMode中选择OwnerDrawFixed或OwnerDrawVariable,则背景将再次变为白色,但字体颜色也将变为白

我使用一个组合框下拉列表来显示一些可以选择的项目。我还使用默认的文本选择项。它的工作原理完全不同于这样一个事实,即一旦我从列表中选择了一个项目,我就可以选择文本并使用退格将其删除,以便所选项目的区域为空白,请参见

我希望防止出现这种情况,或者在不可能的情况下,再次显示默认文本。后者目前还不起作用,所以我尝试了DropDownList,但是整个列表的背景变成灰色。如果在DrawMode中选择OwnerDrawFixed或OwnerDrawVariable,则背景将再次变为白色,但字体颜色也将变为白色而不是黑色


我发现我必须使用DrawItem来更改布局,但即使这样也不行。我只是想要和我为下拉菜单指定的样式相同的样式。有人知道怎么做吗,或者在哪里找到已经回答过的类似问题吗?

这样的问题怎么样? 您还可以尝试将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;
}

建议的解决方案没有解决问题,但我找到了解决最初问题的方法,即手动删除组合框文本,因此我将把它放在这里,以防其他人也有同样的问题。使用时

MyComboBox_TextChanged(object sender, EventArgs e)
我可以自己设置一个限制:如果文本为空,它应该显示默认文本。如果键入的文本等于组合框中的某一项,则应将selectedItem设置为等于键入的文本


我还包括了GotFocus和Leave EventHandlers。

您是否在该网站上搜索过其他可能给您答案的问题?另外,如果你使用C标记,更多的人会看到这个问题。只需单击问题中的编辑链接,并在页面底部添加标记文本字段。我已经搜索了2天了,但找不到正确的关键字来找到答案,使用各种DrawMode和DrawItem选项也不起作用。这似乎是一件很容易的事情,但我就是找不到。我没有完全工作,但无论如何还是要谢谢你。我找到了解决我具体问题的方法。很高兴听到!我也处于同样的位置,按照你想要的方式得到这些东西可能会让人沮丧!