我正在使用以下方法来验证textbox
中groupbox
中的数据
因此,例如为了改善用户反馈
消息文本Please enter
名字
其中名字是文本框的标签,所以我使用Textbox.Tag
存储textbox
的名称来实现它,因为{{1 }}是Textbox
我搜索并发现可以使用Label
属性存储任何内容,但是我想确保我告诉过您的信息是使用
这有什么问题吗?
Tag
谢谢
答案 0 :(得分:4)
如您所读,您可以在Control.Tag属性中存储从对象(即所有对象)派生的任何类型,因此可以存储标签的名称。
答案 1 :(得分:3)
使用Tag属性不会影响您的应用程序。您可以毫无问题地将任何内容存储在其中。
答案 2 :(得分:2)
正如在其他答案中已经提到的那样,可以使用Tag
属性存储有关控件的任何种类的附加信息,包括显示名称。
但是您是否曾经注意到ToolTip
如何让您在设计时为控件设置ToolTip
?
ToolTip
,ErrorProvider
或HelpProvider
是扩展程序提供程序组件的示例。他们在设计时向控件添加了一些属性。您也可以通过实现IExtenderProvider
为DisplayName
创建这样的组件。
示例
以下代码向您展示了如何轻松创建名为DisplayNameExtender
的组件。当您将此组件的实例放在窗体上时,新的属性将添加到控件的设计时,您可以将值设置为该属性
在设计时:diaplayNameExtender1上的 DisplayName 。
然后在运行时,只要要为控件获取DisplayName
的值,就可以通过这种方式找到它:
var displayName = displayNameExtender1.GetDisplayName(control);
以下是DisplayNameExtender
组件的代码:
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
[ProvideProperty("DisplayName", typeof(Control))]
public class DisplayNameExtender : Component, IExtenderProvider
{
private Hashtable displayNameValues = new Hashtable();
public bool CanExtend(object extendee)
{
return (extendee is Control && !(extendee is Form));
}
public string GetDisplayName(Control control)
{
if (displayNameValues.ContainsKey(control))
return (string)displayNameValues[control];
return null;
}
public void SetDisplayName(Control control, string value)
{
if (string.IsNullOrEmpty(value))
displayNameValues.Remove(control);
else
displayNameValues[control] = value;
}
}