【问题标题】:What's happening to my label?我的标签怎么了?
【发布时间】:2014-07-18 14:29:51
【问题描述】:

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

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);

    }
}

产生这个:

是什么导致我的标签被这样切断?为什么组合框坐在一个奇怪的位置?

【问题讨论】:

  • 你需要设置宽度,可能会被拉到文本框后面
  • 在标签上设置宽度

标签: c# winforms visual-studio controls


【解决方案1】:

这里发生的事情是 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 宽度属性:

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

在控件添加到父容器之前不会设置宽度属性。

【讨论】:

  • 好的,我喜欢AutoSize。 Toruble 是它没有设置 WidthSize 属性,导致事物发生奇怪的交互(重叠等)。有没有办法可以使用它来设置lbl.Width
  • 谢谢,整理好了。虽然我不太清楚为什么this.Control.Add(lbl) 的位置会有所不同..?
  • 我告诉过你是因为 AutoSize 不会设置宽度属性,除非控件被添加到父容器中。
  • 啊,是的,因为 cmb.Location 仍然适用于标签的原始宽度。明白了:)
【解决方案2】:

问题:您没有为您的标签控件设置Width。因此您的Label 需要一些默认宽度

解决方法:你需要为你的标签设置Width

试试这个:

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

【讨论】:

  • 好的,为标签做到了。它还不够长,但我会解决这个问题。事情是,文本的结尾被切断了。如果标签不够长,这正常吗?
  • @Ben:是的,如果Label的宽度不够长,那么它就无法显示完整的文本。
【解决方案3】:

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

方案一:将宽度设置为更大的固定宽度:

lbl.Width = 200;

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

lbl.AutoSize = true;

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

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

使用 AutoEllipsis 时,标签保持设置的宽度, 但显示的文字后面跟着三个点,表示未显示所有文字。

【讨论】:

    猜你喜欢
    • 2020-11-26
    • 1970-01-01
    • 2012-09-05
    • 2015-11-14
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多