簡體   English   中英

如何填寫C#comboBox中的空格作為用戶的提示?

[英]How can the blank space in a C# comboBox be filled as a hint for the user?

當動態填充C#中的comboBox時,comboBox將顯示為空白,直到用戶單擊它以查看下拉列表中的可用項目為止。 理想情況下,我想使用此空白區域(在單擊下拉列表之前)用於向用戶提供有關他/她應該做什么的提示。 例如,它可能會說“選擇這樣的......”有沒有辦法做到這一點? 我嘗試設置Text屬性,但是沒有做任何事情。 我使用的是Microsoft Visual C#2008 Express Edition。 謝謝。

它被稱為“提示橫幅”。 Windows窗體不支持它,但它可以用螺栓固定。 在項目中添加一個新類並粘貼下面顯示的代碼。 編譯。 將一個按鈕和新控件從工具箱頂部拖放到表單上。 將Cue屬性設置為要顯示的文本。 需要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);
}

將“提示”項添加到組合框:

yourComboBox.Items.Insert(0, "Select one");

然后將組合框的選定索引設置為0,如下所示:

yourComboBox.SelectedIndex = 0;

組:

comboBox.SelectedIndex = -1

設置comboBox.SelectedText而不是Text。 (為了保持一致性。)

您需要做的就是設置一個事件處理程序。 在這種情況下,單擊事件處理程序應該工作。 添加如下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM