伙计们,我有一个带有面板控件的窗体,在面板控件内是几个其他控件,附带了System.Windows.Forms.Tooltip。如何迭代每个工具提示并将工具提示的Active属性设置为false?与其他控件不同,工具提示实际上不是控件。所以我有这个:
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控件不是从System.Windows.Forms.Control继承的。有什么想法吗?
编辑: 好的伙计们。我可能没有详细说明我得到的答案。我的问题是,我正在采取我的面板中的所有控件并将它们移动到另一个面板。切换后,工具提示仍然连接到控件,这就是我想要的。但是,由于表单和原始面板不再存在,因此移动它们后我无法取消激活或重新激活它们。但是,我找到了一个解决方案,我将在这里发布。
答案 0 :(得分:2)
如何为两个按钮添加工具提示?正确的方法是不以这种方式创建两个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");
要删除button2的工具提示,请使用:
tt1.SetToolTip(button2,string.Empty);
对于您的情况,我们可以使用
foreach(Control c in this.Controls)
{
tt.SetToolTip(c,string.Empty);
}
答案 1 :(得分:0)
编辑:好的,废弃我之前的回答。是的,ToolTip是一个组件,而不是一个控件,所以它根本不在Panel中。从您的问题来看,听起来您有一个ToolTip实例,并且您将其用于此Panel内的控件以及其他控件,对吧?在这种情况下,解决方案很简单:创建一个单独的ToolTip实例并将其用于Panel中的控件,然后直接引用它以停用它,例如。
ttPanel.Active = false;
答案 2 :(得分:0)
通常,您有一个ToolTip实例可以处理所有控件的工具提示显示。单个ToolTip实例只是表单的常规成员。只需将其Active属性设置为false即可。
答案 3 :(得分:0)
好的,我所做的是创建一个继承自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控件来访问工具提示。 希望这是有道理的!