Подтвердить что ты не робот

Показать всплывающую подсказку в текстовом поле

У меня есть textbox, который требует ввода данных определенным образом. Я внедрил некоторые методы проверки ячейки для проверки данных после их ввода, но я хотел бы предоставить пользователю некоторую информацию, прежде чем они войдут в данные.

С этой целью я хотел бы добавить tooltip в textbox, который появляется, когда пользователь входит в панель инструментов, а затем выходит, когда они начинают печатать.

Например, у меня есть следующий код:

private void YearEdit_Enter(object sender, EventArgs e)
  {
        ToolTip tt = new ToolTip();
        tt.IsBalloon = true;
        tt.InitialDelay = 0;
        tt.ShowAlways = true;
        tt.SetToolTip(YearEdit, "Enter 4 digit year.");
    }

Это выполняется, когда пользователь вводит textbox, однако tooltip появляется только тогда, когда мышь наводится над textbox. У кого-нибудь есть идеи, чтобы обойти это? Я думал, что возможно tt.ShowAlways = true может работать, но, очевидно, нет.

4b9b3361

Ответ 1

Подключитесь к событию textbox.enter и используйте следующий код:

private void textBox1_Enter(object sender, EventArgs e)
    {
        TextBox TB = (TextBox)sender;
        int VisibleTime = 1000;  //in milliseconds

        ToolTip tt = new ToolTip();
        tt.Show("Test ToolTip",TB,0,0,VisibleTime);
    }

Играйте с значениями X/Y, чтобы переместить их туда, где вы хотите. Видимое время - это время, пока оно не исчезнет.

Ответ 2

Подсказки появляются только тогда, когда мышь по-прежнему по дизайну.

Вы можете попробовать установить InitialDelay на 0:

tt.InitialDelay = 0;

Но это все равно потребует, чтобы мышка была неподвижной на мгновение.

Однако существуют и другие подходы. Обычный способ показать, какой ввод требуется, - использовать в текстовом поле водяной знак (выцветший текст), который отображает форматирование, необходимое, пока пользователь не начнет вводить текст.

Если вам действительно нужна подсказка, вы можете либо добавить значок информации (как правило, "i" ), который покажет всплывающую подсказку, когда она зависает, либо реализует вашу собственную.

Это может также работать, если вы разбили дату на части (отдельный день, месяц, год). Это позволит вам больше контролировать то, что пользователь может ввести - месяц может стать выпадающим/комбинированным полем, поэтому всегда правильный формат.

Ответ 3

вы также можете показать всплывающую подсказку:

ToolTip t = new ToolTip();
t.Show("Hello World", textBox1, 1000);

Ответ 4

Попробуйте это. (основанный на ответе выше) Добавьте обработчики событий для всех элементов управления, для которых вы хотите иметь всплывающую подсказку. Направьте все обработчики событий на один и тот же метод. Затем создайте метод обработки, подобный этому

private void procToolTips(object sender, EventArgs e)
{
   ToolTip tt = new ToolTip();
   Control o = (Control)sender;
   if ( o.Name == "label1") {
     tt.Show("Lorem ipsum dolor sit ame", o, 1000);
   }
}