Парни, у меня есть форма окон с управлением панелью, и в панели управление несколько других средств управления с Системой. 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 или повторно активирую их, после того как я перемещаю их, так как форма и исходная панель больше не существуют. Однако я нашел решение, которое я отправлю здесь.
Как добавить подсказки для двух кнопок? Правильный способ НЕ заключается в создании двух экземпляров 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);
}
Обычно у вас есть один экземпляр ToolTip, который обрабатывает отображение всплывающих подсказок для всех ваших элементов управления. Этот единственный экземпляр ToolTip является обычным членом вашей формы. Просто установите для его свойства Active значение false.
Edit: OK, исправьте мой предыдущий ответ. Да, ToolTip - это компонент, а не элемент управления, поэтому он вообще не находится в панели. Из вашего вопроса следует, что у вас есть один экземпляр ToolTip, и вы используете его для элементов управления внутри этой панели, а также для других элементов управления, верно? В таком случае решение простое: создайте отдельный экземпляр ToolTip и используйте его для элементов управления в панели, затем просто ссылайтесь на него напрямую, чтобы деактивировать его, например,
ttPanel.Active = false;
Хорошо, я создал новый класс, унаследованный от 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. Надеюсь, это имеет смысл!