我的品牌发生了什么?

时间:2014-05-29 06:45:16

标签: c# winforms visual-studio controls

好的,我有这个代码在我的表单上创建控件:

public CableID_DuplicateView(CableID_CreateView CView)
{
    InitializeComponent();

    Label lbl = new Label();
    Button btn = new Button();
    ComboBox cmb = new ComboBox();
    TextBox txt = new TextBox();

    if (CView.input == 1)
    {
        lbl.Text = "Please select a cable number to duplicate:";
        lbl.Location = new Point(12, 9);

        cmb.Location = new Point((lbl.Width + 17), 6);
        cmb.Size = new System.Drawing.Size(125, 20);

        btn.Location = new Point((lbl.Width + cmb.Width + 17), 5);
        btn.Size = new System.Drawing.Size(90, 23);
        btn.Text = "Add to Table";

        this.Height = cmb.Height + 48;
        this.Width = lbl.Width + cmb.Width + btn.Width + 34;

        this.Controls.Add(lbl);
        this.Controls.Add(cmb);
        this.Controls.Add(btn);

    }
}

产生这个:

enter image description here

是什么原因导致我的标签被切断了?为什么comboBox坐在一个奇怪的位置?

3 个答案:

答案 0 :(得分:2)

这里发生的事情是label.width是100而不是覆盖整个文本而是这样做:

lbl.Text = "Please select a cable number to duplicate:";
lbl.Location = new Point(12, 9);
lbl.Width = 200;

你也可以这样做:

lbl.AutoSize = true;

尝试此设置AutoSize width属性:

lbl.Text = "Please select a cable number to duplicate:";
lbl.Location = new Point(12, 9);
lbl.AutoSize = true;
this.Controls.Add(lbl);

在将控件添加到父容器之前,不会设置Width属性。

答案 1 :(得分:1)

问题:您没有为Label Control设置Width。因此Label需要一些默认宽度

解决方案:您需要为标签设置Width

试试这个:

lbl.Size = new System.Drawing.Size(200, 20); //width = 200, height = 20

答案 2 :(得分:1)

正如其他人所说,标签的宽度太短。

解决方案1 ​​:将宽度设置为更大的固定宽度:

lbl.Width = 200;

解决方案2 :将AutoSize设置为true:

lbl.AutoSize = true;

解决方案3 :将固定宽度与AutoEllipsis属性结合使用:

lbl.Width = 100;
lbl.AutoEllipsis = true;

使用AutoEllipsis时,标签仍然是设定的宽度, 但是显示的文字后跟三个点,表示并非显示所有文字。