以编程方式将字符串与 Visual Studio 2010 中的控件与 Winforms 相关联的有效方法

本文关键字:Winforms 控件 方法 有效 关联 2010 方式 编程 字符串 Studio Visual | 更新日期: 2023-09-27 18:34:50

我正在尝试找到一种有效的工具提示方法,该方法涉及将字符串注入窗体底部的状态栏中。我有两种方法,mouseEntermouseLeave,我想用它们来统一显示与我为其设置的任何随机用户控件关联的字符串。

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 59

使用 sender.ToString(); 方法时,我在状态栏中得到一个不连贯的文本字符串。这根本不是要使用的正确属性。

我可以使用的所有控件中是否有一个属性,然后我可以从中获取并作为字符串插入?如果没有,以任何允许我将其作为字符串的方式分配给它们的最佳方式是什么mouseEnter

谢谢。

以编程方式将字符串与 Visual Studio 2010 中的控件与 Winforms 相关联的有效方法

如何利用Control类的Tag属性。例如,在设计器中,将TextBoxTag设置为"这是我的工具提示",然后在mouseEnter中执行以下操作:

var c = sender as Control;
if (c == null) { return; }
toolStripStatusLabel1.Text = Convert.ToString(c.Tag);
可以使用

Tag 属性来存储有关控件的用户特定信息。 没有别的东西会碰它。 虽然我不确定这是本地化字符串键的正确位置。

传统工具提示

通常的工作方式是在工具提示本身上为每个对象定义工具提示。 在内部,它有一个字典,基本上是这样映射的:

control1 -> "control1's tooltip"
control2 -> "control2's tooltip"
control3 -> "control3's tooltip"

为什么不使用带有控件名称的字典作为键?

var ControlDict = new Dictionary<string,string>();
ControlDict.Add("txtName", "Your Name");
toolStripStatusLabel1.Text = ControlDict[sender.ToString()];