我试图找到一种有效的工具提示方法,它涉及到将字符串注入表单底部的状态条。我有两个方法,mouseEnter和mouseLeave,我想使用它们来统一显示与我设置的任意用户控件相关联的字符串。
mouseLeave很简单:
private void mouseLeave(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = "";
}但是mouseEnter要困难得多,因为每个控件都需要自己的字符串。如果需要的话,我可以将这些硬编码到程序中,我只是希望它能够工作,而不需要为每个对象提供不同的方法。
下面显示了我正在尝试的一种方法(注释行都不起作用,只是显示了我的进展):
private void mouseEnter(object sender, EventArgs e)
{
//toolStripStatusLabel1.Text = pictureBoxLogo.GetAccessibilityObjectById(AccessibleDescription);
//toolStripStatusLabel1.Text = sender.ToString();
}当使用GetAccessibilityObjectById时,我会得到错误消息:
错误23不能通过‘System.Windows.Forms.PictureBox’类型的限定符访问受保护的成员'System.Windows.Forms.Control.GetAccessibilityObjectById(int)‘;限定符必须是'.MainForm’(或派生自它) \formMain.cs 59。
当使用sender.ToString();方法时,我在状态栏中得到一个不连贯的文本字符串。这根本不是要使用的正确属性。
是否有我可以使用的所有控件的一个属性,然后我可以从它们中获取这些控件并将其插入为字符串?如果不是,以任何方式向他们分配字符串的最佳方式是什么,这样我就可以在mouseEnter中以字符串的形式获得字符串
谢谢。
发布于 2013-10-09 19:44:57
如何利用Tag类的Control属性。例如,在设计器中,将Tag的TextBox设置为“这是我的工具提示”。然后在mouseEnter中这样做:
var c = sender as Control;
if (c == null) { return; }
toolStripStatusLabel1.Text = Convert.ToString(c.Tag);发布于 2013-10-09 19:44:23
可以使用Tag属性存储有关控件的用户特定信息。没有别的东西能碰它了。虽然我不确定这是本地化字符串键的合适位置。
传统工具提示通常的工作方式是为工具提示本身的每个对象定义工具提示。在内部,它有一个字典,本质上是这样的映射:
control1 -> "control1's tooltip"
control2 -> "control2's tooltip"
control3 -> "control3's tooltip"发布于 2013-10-09 19:45:53
为什么不使用带有控件名称的字典作为键呢?
var ControlDict = new Dictionary<string,string>();
ControlDict.Add("txtName", "Your Name");
toolStripStatusLabel1.Text = ControlDict[sender.ToString()];https://stackoverflow.com/questions/19281119
复制相似问题