Winform控件开发(1)——Label(史上最全)
作⽤:⼀般⽤于显⽰⽂本或者作为"按钮使⽤",当作为显⽰⽂本使⽤时,通过设置label的Text属性实现,当作为“按钮使⽤时”,在lable 的单击事件下注册事件即可,下⾯详细介绍label的属性以及事件:
⼀、属性
textbox控件边框设置1、Name属性,该属性代表label类对象的名称,通过该属性可以获取到该label对象,如下图:
该label对象名称为label1,当然也可以更改为其他名称
2、AllowDrop属性,该属性的值是指⽰控件是否接受⽤户拖放⽂件的数据,具体指某个⽂件的全路径,具体操作过程以及代码如下:
private void label1_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
Console.WriteLine(1);
}
private void label1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
label1.Text = ((string[])e.Data.GetData(DataFormats.FileDrop))[0];
}
3、Anchor属性,当窗体的⼤⼩发⽣改变时,label是否绑定⽗容器的边缘(当都不绑定时,label随着窗体⼤⼩变化发⽣⽆规则的变化),
以及具体与⽗容器哪条边的距离保持不变,下图为topright时的程序运⾏结果。
4、AutoEllipsis ,指⽰当label中的⽂字超出label⼤⼩时,是否在label的末尾显⽰省略号…,如下图:
以上设置autoEllipsis为true时,autosize属性⼀定要设置为false,否则由于label的⼤⼩随着⽂本的增多⾃动改变⼤⼩,autoellipsis属性将会失效。
5、autosize,当改变label的⽂本内容或者改变字体⼤⼩,字体样式时,label本省也跟着改变⼤⼩,如下图:
6、backcolor,改变背景颜⾊,如下图:
7、borderstyle,设置控件边框的样式,由于label的borderstyle的样式不明显,故这⾥⽤textbox举例,可以看出borderstyle为none时没有边框,且⽆⽴体感,为fixedsingle时有⿊⾊的边框,为fixed3d时,⽴体感⾮常强,如下图
8、CausesValidation,该值设置为true时,当控件失去焦点时(控件焦点的执⾏顺序是Enter、GotFocus、Leave、Validating、Validated、LoseFocus),需要对控件进⾏验证(这⾥要注意不能在主窗体构造函数以及在Load事件中使控件获取焦点focus⽅法或者判断控件是否可以获取焦点CanFocus属性,这样的操作是⽆效的,关于何时可以对控件的焦点进⾏操作,请看这篇⽂章),经过测试原⽂中OnGotFocus⽆法执⾏,焦点操作在OnActivated⽅法开始以及之后都可以,如果不想重写这些⽅法并且要实现在初始化时对控件焦点进⾏控制,有两种⽅法参考,第⼀种是在form的Activated
事件中控制控件的焦点,也可以另外开线程对控件焦点进⾏操作,线程控件验证代码和操作过程如下图):
private void label1_Validating(object sender, CancelEventArgs e)
{
if (((Label)sender).Text == string.Empty)
if (((Label)sender).Text == string.Empty)
{
Console.WriteLine(“不能为空”);
e.Cancel = true;
}
}
private void Form1_Load(object sender, EventArgs e)
{
Thread thread1 = new Thread(UpdateUi);
thread1.IsBackground = true;
thread1.Start();
}
private void UpdateUi()
{
this.Invoke(new Action (()=>label1 .Focus ()));
}
以上代码在CausesValidation的值为true时,控件焦点离开时执⾏,初始化程序时,让label1获取焦点;
gif图⽚可以看出,如果在validating事件中,e.cancel=true时,焦点的位置会保持不动,除⾮e.cancel=false,焦点才能顺利的发⽣变化。
9、contextMenuStrip,右键菜单,⽤于将菜单和某个控件绑定,当右键单击控件时,弹出菜单,我们可以在菜单中编辑业务代码,如下:
如果需要改变菜单弹出的位置,则可以在控件的MouseUp事件中show出菜单,代码如下:
private void label1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
//this.label1.ContextMenuStrip.Show(this, new Point(label1.Location.X, label1.Location.Y));
this.label1.ContextMenuStrip.Show(this.label1, new Point(label1.Location.X, label1.Location.Y));
}
}
show⽅法中的第⼀个参数是菜单距离指定控件⼀定位置时显⽰,第⼆个参数是菜单显⽰时和指定控件相距的X,Y位置。
10、Cursor,该属性指⽰当窗体程序运⾏后,⿏标经过控件时,⿏标光标的形状,如下图:
11、Dock,控件在⽗容器中停靠的位置,分为top,bottom,left,right,fill,none六种情况,并且label的autosize属性为true时以及为false时,控件的停靠情况不⼀致,分别如下图:
autosize为true时:
以上可以看出,当autosize为true时,left、top、fill均为左上⾓停靠,right为右上⾓,bottom为左下⾓
autosize为false时: