日期:2014-05-18  浏览次数:20816 次

c#中textboxtext的tag起什么作用?
如题,我看到一个例子是把它作为标记用的false和true。那为什么不设一个变量做标记,要用tag呢,tag到底是什么作用?

------解决方案--------------------
MSDN里的一个解释:
一个 Object,它包含有关控件的数据。
Tag 属性的一个常见用途,是存储与控件密切关联的数据。例如,如果有一个显示客户信息的控件,则可以将包含客户订购历史的 DataSet 存储在该控件的 Tag 属性中,以便可以快速访问数据。

你确实可以另外设一个变量做标记,用来存储如bool,string,int 等等。

但你也可以把一些控件的相关数据存放在TAG中,之所以使用TAG,我认为是出于可以快速的访问与此控件相关的数据,或者说是因为你觉得临时的定义一个变量来存储那个控件的数据的话,有点麻烦,还不如将这个数据直接暂时
储存在它的TAG属性中算了,免得去编写定义变量的代码.反正几乎每个控件都有TAG属性,你可以将相关控件的相关数据 存放在TAG中。


------解决方案--------------------
以下例子来自互联网:

一个combobox控件...一个textBox控件..
一个datagridview控件!
datagridview控件是连接数据库的...
combobox和textBox是联合查询的!!!!
要求:根据combobox的下拉选项(有N个)和textBox的值结合查询...
比如:"select * from tablename where " + combobox.Tag.ToString() + " = " + textBox.Text.ToString() ;
为什么要用Tag呢?
在combobox的下拉选项里,一般都是文字说明:比如:按编号查询,,按名字查询等等..
但是..我们的数据库设计的时候,,字段可能是ID..Name等等...
这时..我们可以在combobox的SelectedIndexChanged事件(就是选择下拉选项发生变化时)
给combobox的Tag赋一个值,这个值就是和数据库字段对应的值...
比如:
if(combobox.SelectedIndex == 0)

combobox.Tag = "ID";
}
if(combobox.SelectedIndex == 1)
{
combobox.Tag = "name";
}
...
...
这就保证了查询时的一致和正确!

因为..Tag是不可见的(运行时)..所以..是一个很好的做标记用的...!

------解决方案--------------------
以前我们老师说它Tag几乎可以做任何事情,因为它是以object的方式来传递的。
就像这样
C# code

        private void Form1_Load(object sender, EventArgs e){
            this.Tag = "HelloWorld";
            Form form2 = new Form2();
            form2.Tag = this.Tag;
            form2.Show();
        }

然后form2的Load()事件,(或是别的事件)就可以接受上面传过来的东西了。
        private void Form2_Load(object sender, EventArgs e)        {
            this.Text =(string) this.Tag;
        }