C# 在Visual Studio 2010和Winforms中,用于将字符串与控件关联的编程高效方法
我试图找到一种高效的工具提示方法,该方法涉及将字符串注入表单底部的状态栏。我有两种方法,C# 在Visual Studio 2010和Winforms中,用于将字符串与控件关联的编程高效方法,c#,string,winforms,visual-studio-2010,tooltip,C#,String,Winforms,Visual Studio 2010,Tooltip,我试图找到一种高效的工具提示方法,该方法涉及将字符串注入表单底部的状态栏。我有两种方法,mouseEnter和mouseLeave,我想用它们来统一显示与我设置的任何随机用户控件关联的字符串 mouseLeave很容易: private void mouseLeave(object sender, EventArgs e) { toolStripStatusLabel1.Text = ""; } 但是mouseEnter要困难得多,因为每个控件都需要自己
mouseEnter
和mouseLeave
,我想用它们来统一显示与我设置的任何随机用户控件关联的字符串
mouseLeave
很容易:
private void mouseLeave(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = "";
}
但是mouseEnter
要困难得多,因为每个控件都需要自己的字符串。如果需要,我可以将这些硬编码到程序中,我只希望它能够工作,而不需要为每个对象使用不同的方法
我正在尝试的一种方法如下所示(注释行都不起作用,但只显示了我的进度):
使用GetAccessibilityObjectById
时,我收到错误消息:
错误23无法通过类型为“System.Windows.Forms.PictureBox”的限定符访问受保护成员“System.Windows.Forms.Control.GetAccessibilityObjectById(int)”;限定符的类型必须为“.MainForm”(或从中派生)\formMain.cs 59
当使用sender.ToString()时方法,我在状态栏中得到一个不连贯的文本字符串。这根本不是要使用的正确属性
我可以使用的所有控件中是否有一个属性,我可以从它们中提取并作为字符串插入?如果没有,那么以任何方式将字符串分配给它们的最佳方式是什么,这样我就可以在鼠标中将其作为字符串来获取
谢谢。您可以使用标记
属性存储控件的用户特定信息。没有别的东西能碰它。虽然我不确定它是否适合放置本地化字符串键
传统工具提示的正常工作方式是在工具提示本身上为每个对象定义工具提示。在内部,它有一个基本映射如下的字典:
control1 -> "control1's tooltip"
control2 -> "control2's tooltip"
control3 -> "control3's tooltip"
您可以使用标记
属性存储有关控件的用户特定信息。没有别的东西能碰它。虽然我不确定它是否适合放置本地化字符串键
传统工具提示的正常工作方式是在工具提示本身上为每个对象定义工具提示。在内部,它有一个基本映射如下的字典:
control1 -> "control1's tooltip"
control2 -> "control2's tooltip"
control3 -> "control3's tooltip"
如何利用控件
类的标记
属性。例如,在设计器中,将文本框的标记设置为“这是我的工具提示”。然后在鼠标中执行以下操作:
var c = sender as Control;
if (c == null) { return; }
toolStripStatusLabel1.Text = Convert.ToString(c.Tag);
如何利用控件
类的标记
属性。例如,在设计器中,将文本框的标记设置为“这是我的工具提示”。然后在鼠标中执行以下操作:
var c = sender as Control;
if (c == null) { return; }
toolStripStatusLabel1.Text = Convert.ToString(c.Tag);
为什么不使用控件名作为键的字典呢
var ControlDict = new Dictionary<string,string>();
ControlDict.Add("txtName", "Your Name");
toolStripStatusLabel1.Text = ControlDict[sender.ToString()];
var-ControlDict=newdictionary();
添加(“txtName”、“您的名字”);
toolStripStatusLabel1.Text=ControlDict[sender.ToString()];
为什么不使用控件名作为键的字典
var ControlDict = new Dictionary<string,string>();
ControlDict.Add("txtName", "Your Name");
toolStripStatusLabel1.Text = ControlDict[sender.ToString()];
var-ControlDict=newdictionary();
添加(“txtName”、“您的名字”);
toolStripStatusLabel1.Text=ControlDict[sender.ToString()];
是!我看到并试图使用GetAccessibilityObjectById
方法使用Tag
,但它给了我与上面相同的错误。你到底为什么要调用该函数?在你的MouseEnter函数中,你收到了对相关控件的引用。您只需执行toolStripStatusLabel1.Text=((控制)发送方).tagas string因为我是C#的新手,对自己在做什么一无所知;视觉程序和脚本程序之间的差异仍然让我着迷。是的!我看到并试图使用GetAccessibilityObjectById
方法使用Tag
,但它给了我与上面相同的错误。你到底为什么要调用该函数?在你的MouseEnter函数中,你收到了对相关控件的引用。您只需执行toolStripStatusLabel1.Text=((控制)发送方).tagas string因为我是C#的新手,对自己在做什么一无所知;视觉程序和脚本程序之间的差异仍然让我着迷。这对我很有用!我不能说我完全理解它下面的概念。但我可以告诉你,你让我开心。谢谢(我会尽快投票选出最佳答案)@JWarner112,我很高兴能帮上忙。这对我很有用!我不能说我完全理解它下面的概念。但我可以告诉你,你让我开心。谢谢(我会尽快投票选出最佳答案)@JWarner112,我很高兴能帮上忙。