C# 如何将C组合框中的空白填充为用户的提示?

C# 如何将C组合框中的空白填充为用户的提示?,c#,combobox,C#,Combobox,当动态填充C中的组合框时,组合框将显示为空白,直到用户单击它以查看下拉列表中的可用项。理想情况下,我希望在单击下拉列表之前使用此空白区域,以便向用户提示其应该做什么。例如,它可能会说,选择某某某某。。。有办法做到这一点吗?我尝试设置Text属性,但没有任何效果。我正在使用Microsoft Visual C 2008快速版。谢谢。将提示项添加到组合框中: yourComboBox.Items.Insert(0, "Select one"); 然后将组合框的选定索引设置为0,如下所示: your

当动态填充C中的组合框时,组合框将显示为空白,直到用户单击它以查看下拉列表中的可用项。理想情况下,我希望在单击下拉列表之前使用此空白区域,以便向用户提示其应该做什么。例如,它可能会说,选择某某某某。。。有办法做到这一点吗?我尝试设置Text属性,但没有任何效果。我正在使用Microsoft Visual C 2008快速版。谢谢。

将提示项添加到组合框中:

yourComboBox.Items.Insert(0, "Select one");
然后将组合框的选定索引设置为0,如下所示:

yourComboBox.SelectedIndex = 0;
private void comboBox1_Click(object sender, EventArgs e)
{
       comboBox1.Text = "Please select...?";
}

设置组合框。选择文本而不是文本。有利于一致性。

您只需设置一个事件处理程序。在这种情况下,单击事件处理程序应该可以工作。添加如下内容:

yourComboBox.SelectedIndex = 0;
private void comboBox1_Click(object sender, EventArgs e)
{
       comboBox1.Text = "Please select...?";
}

它被称为球杆横幅。Windows窗体不支持它,但可以栓接它。向项目中添加一个新类并粘贴如下所示的代码。编写从工具箱顶部将按钮和新控件拖放到窗体上。将提示属性设置为要显示的文本。Vista或Win7必需,提示仅在组合框没有焦点时可见

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class ComboBoxEx : ComboBox {
    private string mCue;
    public string Cue {
        get { return mCue; }
        set {
            mCue = value;
            updateCue();
        }
    }
    private void updateCue() {
        if (this.IsHandleCreated)
            SendMessageCue(this.Handle, CB_SETCUEBANNER, IntPtr.Zero, mCue ?? "");
    }
    protected override void OnHandleCreated(EventArgs e) {
        base.OnHandleCreated(e);
        updateCue();
    }
    // P/Invoke
    private const int CB_SETCUEBANNER = 0x1703;
    [DllImport("user32.dll", EntryPoint="SendMessageW", CharSet = CharSet.Auto)]
    private static extern IntPtr SendMessageCue(IntPtr hWnd, int msg, IntPtr wp, string lp);
}
设置:


+我不知道这是可能的。。。也许有一天它会派上用场;顺便说一句,您的实现阻止用户清除提示,因为当字符串为空时您没有调用SendMessageCue…为什么WinForms不支持它?我想这是故意的,但为什么呢?我不认为这有什么坏处…历史,.NET 2.0支持Win98。我还没有在C中尝试过它,但我知道在VB.NET中,即使组合框是数据绑定的,您仍然可以向组合框添加项。技巧在于从内存中插入数据的顺序,即在数据绑定之前插入数据。?看起来它只是选择列表中的第一个选项,而不是在选择框中添加提示。它是如何工作的?