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

PictureBox Tooltip, изменяющий С#

Хорошо, поэтому я полный новичок и сумел собрать небольшое приложение на С#, где я вводил имя пользователя в текстовое поле, и приложение получает аватар этого имени пользователя и отображает его в кадре.

Что я хочу сделать, так это показать подсказку с именем пользователя, которое было введено в текстовое поле, когда мышь нависает над загруженным аватаром. он должен меняться каждый раз, когда загружается новый аватар. Я знаю, как использовать всплывающие подсказки обычным способом, но для меня это немного сложно. Любая помощь будет оценена.

Спасибо.

4b9b3361

Ответ 1

Добавьте событие для зависания в ваш файл с кодом ниже.

private void pictureBox1_MouseHover(object sender, EventArgs e)
{
    ToolTip tt = new ToolTip();
    tt.SetToolTip(this.pictureBox1, "Your username");
}

Ответ 2

Ответ Joes выполняет свою работу, но он неэффективен. Код создает новый ToolTip каждый раз, когда PictureBox зависает. Когда вы используете метод SetToolTip(), он связывает созданный ToolTip с указанным элементом управления и сохраняет ToolTip в памяти. Вам нужно только один раз вызвать этот метод. Я предлагаю вам создать только один ToolTip для каждого PictureBox в вашем конструкторе форм. Я тестировал это, и он отлично работает, и подсказки для подсказок отображаются быстрее для меня:

public MyForm()
{
    InitializeComponent();

    // The ToolTip for the PictureBox.
    new ToolTip().SetToolTip(pictureBox1, "The desired tool-tip text.");
}

Ответ 3

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
        ToolTip tooltip1 = new ToolTip();
        tooltip1.Show(textBox1.Text, this.pictureBox1);
    }

      private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        pictureBox1.Invalidate();
    }

Ответ 4

Ответ Брэндона-Миллера в порядке, за исключением того, что он предлагает создать одну подсказку для PictureBox. Это все еще неэффективно, хотя лучше, чем подход Джо, потому что на самом деле вам не нужно больше одного объекта Tooltip для всей формы! Он может создавать тысячи "подсказок подсказок" (вероятно, не фактический термин) для разных элементов управления (бит и бобы в формах). Вот почему вы определяете элемент управления как первый параметр при создании или настройке всплывающей подсказки.

Правильный (или, по крайней мере, наименее расточительный) подход, насколько мне известно, заключается в создании объекта ONE Tooltip для каждой формы, а затем используйте SetTooltip чтобы создать "определения" для разных элементов управления. Пример:

private ToolTip helperTip;
public MyForm()
{
    InitializeComponent();

    // The ToolTip inicialization. Do this only once.
    helperTip = new ToolTip(pictureBox1, "Tooltip text");
    // Now you can create other 'definitions', still using the same tooltip! 
    helperTip.SetToolTip(loginTextBox, "Login textbox tooltip");
}

Или, несколько иначе, с заранее сделанной персонализацией:

// Instantiate a new ToolTip object. You only need one of these! And if
// you've added it through the designer (and renamed it there), 
// you don't even need to do this declaration and creation bit!
private ToolTip helperTip = new ToolTip();
public MyForm()
{
    InitializeComponent();

    // The ToolTip setting. You can do this as many times as you want
    helperTip.SetToolTip(pictureBox1, "Tooltip text");
    // Now you can create other 'definitions', still using the same tooltip! 
    helperTip.SetToolTip(loginTextBox, "Login textbox tooltip");
}

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