Свойство IsBalloon делает позицию подсказки Windows Forms несовместимой - PullRequest
2 голосов
/ 12 июля 2011

Когда я устанавливаю свойство IsBalloon элемента управления ToolTip, а затем использую метод ToolTip.Show() для его отображения, хвост воздушного шара не всегда указывает на местоположение, которое я запрашиваю. Кажется, что в первый раз, когда я звоню Show(), элемент управления всплывающей подсказки появляется с его верхним левым углом в месте, которое я запрашивал, и хвостом воздушного шара, указывающим вниз. Если я позвоню Show() еще раз до того, как всплывающая подсказка исчезнет, ​​то она снова появится в том положении, о котором я просила.

Есть ли какие-то настройки, которые сделают позицию более последовательной? Я хотел бы сохранить стиль воздушного шара, если это возможно.

Вот пример кода, который продемонстрирует ошибку. Я прошу его указать в левом верхнем углу текстового поля.

using System;
using System.Windows.Forms;

public class Form1 : Form
{
    const int TIP_X = 50;
    const int TIP_Y = 100;

    private void button1_Click(object sender, EventArgs e)
    {
        toolTip1.Show("Test", groupBox1, TIP_X, TIP_Y, 5000);
    }

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
        this.components = new System.ComponentModel.Container();
        this.button1 = new System.Windows.Forms.Button();
        this.groupBox1 = new System.Windows.Forms.GroupBox();
        this.textBox1 = new System.Windows.Forms.TextBox();
        this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
        this.groupBox1.SuspendLayout();
        this.SuspendLayout();

        this.button1.Location = new System.Drawing.Point(50, 50);
        this.textBox1.Location = new System.Drawing.Point(TIP_X, TIP_Y);
        this.toolTip1.IsBalloon = true;

        this.button1.Click += new System.EventHandler(this.button1_Click);
        this.groupBox1.Controls.Add(this.textBox1);
        this.groupBox1.Controls.Add(this.button1);
        this.groupBox1.Location = new System.Drawing.Point(10, 10);
        this.groupBox1.Size = new System.Drawing.Size(200, 200);
        this.Controls.Add(this.groupBox1);
        this.groupBox1.ResumeLayout(false);
        this.groupBox1.PerformLayout();
        this.ResumeLayout(false);

    }

    public Form1()
    {
        InitializeComponent();
    }

    private Button button1;
    private GroupBox groupBox1;
    private TextBox textBox1;
    private ToolTip toolTip1;

    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }
}

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

Я использую Visual Studio 2008, работаю в .NET 3.5 под Windows XP.

1 Ответ

2 голосов
/ 12 июля 2011

Пока что лучший обходной путь, который я нашел, это просто дважды вызвать метод Show():

    private void button1_Click(object sender, EventArgs e)
    {
        toolTip1.Show("Test", groupBox1, TIP_X, TIP_Y, 5000);
        toolTip1.Show("Test", groupBox1, TIP_X, TIP_Y, 5000);
    }

Надеюсь, есть что-то приятнее, чем это.

Вопрос переполнения стека Подсказка Windows Forms не появится вновь после первого использования звучит неопределенно похоже и упоминает ошибка Всплывающая подсказка положения всплывающей подсказки с использованием метода Show что Microsoft, похоже, не заинтересована в исправлении.

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