繁体   English   中英

如何在Windows窗体代码隐藏中水平放置标签

[英]How to position a Label horizontally in Windows Forms code-behind

我有一个Windows窗体,我想从后台代码中进行操作。

我可以做这样的事情:

myForm.TheLableThatIWantToPosition.Text = "Some text!";

myForm.TheLableThatIWantToPosition.ForeColor = Color.Red;

etc. 

但是,如何水平定位呢? 我想水平居中。

我尝试了:

myForm.TheLableThatIWantToPosition.TextAlign = ContentAlignment.MiddleCenter;

以及其他所有选项,但都不会发生。

如果要居中对齐标签中的内容-

AutoSize = false;
TextAlign = MiddleCenter;

您可以将此代码放置在label1.ParentSizeChanged事件处理程序中:

if(label1.Parent != null){ //this if check may be removed if it's sure that Parent is not null
 label1.Left = (label1.Parent.Width - label1.Width)/2;
}

最好您执行以下操作:

//SizeChanged event handler for your label1
private void label1_SizeChanged(object sender, EventArgs e){
   label1.Left = (label1.Parent.Width - label1.Width)/2;
}
//SizeChanged event handler for your label1's Parent
private void parent_SizeChanged(object sender, EventArgs e){
   label1.Left = (label1.Parent.Width - label1.Width)/2;
}
//you can change label1.Parent with a control reference which you know it's the container of your label1.

为了使它动态,例如,您有一个CustomLabel类,并且您希望它在放置/添加到另一个容器时默认情况下居中:

public class CustomLabel : Label {
  public CustomLabel(){
     IsCentered = true;
  }
  private Control oldParent;
  public bool IsCentered {get;set;}//You can define an Enum if needed
  protected override void OnSizeChanged(EventArgs e){
    if(Parent != null&&IsCentered){
       Center();
    }
  }
  protected override void OnParentChanged(EventArgs e){
     if(Parent != null){
        if(oldParent != null) oldParent.SizedChanged -= parent_SizeChanged;
        Parent.SizedChanged -= parent_SizeChanged;
        Parent.SizedChanged += parent_SizeChanged;
        Center();
     }
     oldParent = Parent;
  }
  private void parent_SizeChanged(object sender, EventArgs e){
    if(IsCentered) Center();
  }
  public void Center(){
    Left = (Parent.Width - Width)/2;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM