Как заполнить пробел в C # comboBox как подсказку для пользователя? - PullRequest
2 голосов
/ 31 марта 2010

При динамическом заполнении поля со списком в C # поле со списком отображается пустым, пока пользователь не щелкнет по нему, чтобы просмотреть доступные элементы в раскрывающемся списке. В идеале я хотел бы использовать это пустое пространство (до нажатия на раскрывающееся меню), чтобы дать пользователю подсказку относительно того, что он / она должен делать. Например, он может сказать что-то вроде: «Выберите то-то и то-то ...». Есть ли способ сделать это? Я попытался установить свойство Text, но ничего не сделало. Я использую Microsoft Visual C # 2008 Express Edition. Спасибо.

Ответы [ 5 ]

8 голосов
/ 31 марта 2010

Это называется "кий-баннер". Windows Forms не поддерживает его, но его можно закрепить. Добавьте новый класс в ваш проект и вставьте код, показанный ниже. Компиляция. Перетащите кнопку и новый элемент управления из верхней части панели инструментов на форму. Установите для свойства 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);
}
5 голосов
/ 31 марта 2010

Добавьте элемент «подсказка» в поле со списком:

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

затем установите выбранный индекс поля со списком на 0 следующим образом:

yourComboBox.SelectedIndex = 0;
0 голосов
/ 28 августа 2012

комплект:

comboBox.SelectedIndex = -1
0 голосов
/ 31 марта 2010

Все, что вам нужно сделать, это установить обработчик событий. В этом случае обработчик события щелчка должен работать. Добавьте что-то вроде этого:

private void comboBox1_Click(object sender, EventArgs e)
{
       comboBox1.Text = "Please select...?";
}
0 голосов
/ 31 марта 2010

Установить comboBox.SelectedText вместо текста. (Yay для последовательности.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...