Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Visual Studio 2010和Winforms中,用于将字符串与控件关联的编程高效方法_C#_String_Winforms_Visual Studio 2010_Tooltip - Fatal编程技术网

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 stringGetAccessibilityObjectById
方法使用
Tag
,但它给了我与上面相同的错误。你到底为什么要调用该函数?在你的MouseEnter函数中,你收到了对相关控件的引用。您只需执行
toolStripStatusLabel1.Text=((控制)发送方).tagas string