Итерация через подсказки

Парни, у меня есть форма окон с управлением панелью, и в панели управление несколько других средств управления с Системой. Windows. Формы. Подсказка присоединяется к ним. Как я могу выполнить итерации через каждую подсказку и установить свойство Active подсказки ко лжи? Подсказки, в отличие от других средств управления, не являются на самом деле средствами управления. Таким образом, у меня было это:

foreach (System.Windows.Forms.Control ctrl in this.pnlControl.Controls)
{
    if (ctrl.Name.StartsWith("tt")) // since all my tooltip names start with 'tt'
    {
        System.Windows.Forms.ToolTip TipControl=(System.Windows.Forms.ToolTip)ctrl;

        TipControl.Active=false;
    }
}

Это не работает все же. Это получает ошибку, потому что управление ToolTip не наследовано от Системы. Windows. Формы. Управление. Какие-либо идеи?

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

1
задан Icemanind 19 May 2010 в 17:20
поделиться

4 ответа

Как добавить подсказки для двух кнопок? Правильный способ НЕ заключается в создании двух экземпляров ToolTip таким способом:

 ToolTip tt1 = new ToolTip();   //or you can create one in the designer
 tt1.ToolTipTitle = "test";
 tt1.SetToolTip(button1, "caption1");
 ToolTip tt2 = new ToolTip();
 tt2.ToolTipTitle = "test2";
 tt2.SetToolTip(button2, "caption2");

Помните, что экземпляр ToolTip и элемент управления не связаны друг с другом. Правильный способ для этого примера:

ToolTip tt1 = new ToolTip();   //or you can create one in the designer
tt1.ToolTipTitle = "test";
tt1.SetToolTip(button1, "caption1");
tt1.SetToolTip(button2, "caption2");

Чтобы удалить всплывающую подсказку кнопки 2, используйте:

tt1.SetToolTip(button2,string.Empty);

В вашем случае мы можем использовать

foreach(Control c in this.Controls)
{
   tt.SetToolTip(c,string.Empty);
}
2
ответ дан 3 September 2019 в 00:28
поделиться

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

0
ответ дан 3 September 2019 в 00:28
поделиться

Edit: OK, исправьте мой предыдущий ответ. Да, ToolTip - это компонент, а не элемент управления, поэтому он вообще не находится в панели. Из вашего вопроса следует, что у вас есть один экземпляр ToolTip, и вы используете его для элементов управления внутри этой панели, а также для других элементов управления, верно? В таком случае решение простое: создайте отдельный экземпляр ToolTip и используйте его для элементов управления в панели, затем просто ссылайтесь на него напрямую, чтобы деактивировать его, например,

ttPanel.Active = false;
0
ответ дан 3 September 2019 в 00:28
поделиться

Хорошо, я создал новый класс, унаследованный от Control, например:

public class TooltipMaster : System.Windows.Forms.Control
{
    private System.Windows.Forms.ToolTip m_tooltip1;
    private System.Windows.Forms.ToolTip m_tooltip2;
    private System.Windows.Forms.ToolTip m_tooltip3;
    private System.Windows.Forms.ToolTip m_tooltip4;

    public System.Windows.Forms.ToolTip ToolTip1 {
        get { return m_tooltip1; }
        set { m_tooltip1 = value; }
    }
    public System.Windows.Forms.ToolTip ToolTip2 {
        get { return m_tooltip2; }
        set { m_tooltip2 = value; }
    }
    public System.Windows.Forms.ToolTip ToolTip3 {
        get { return m_tooltip3; }
        set { m_tooltip3 = value; }
    }
    public System.Windows.Forms.ToolTip ToolTip4 {
        get { return m_tooltip4; }
        set { m_tooltip4 = value; }
    }
}

Затем я создал экземпляр этого класса внутри события Load моей основной формы. Затем я просто назначил каждую из своих 4 всплывающих подсказок 4 всплывающим подсказкам в этом классе. Наконец, я добавил этот элемент управления на свою панель. После всего этого я мог получить доступ к всплывающим подсказкам позже, перебирая каждый элемент управления и ища элемент управления TooltipMaster. Надеюсь, это имеет смысл!

0
ответ дан 3 September 2019 в 00:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: