【问题标题】:C#: Docking label at middle bottom of panel and have it grow with content on run time.C#:面板中间底部的停靠标签,并在运行时随内容增长。
【发布时间】:2017-07-04 04:16:00
【问题描述】:

我需要一个标签出现在面板的中间底部(例如底线上方 30 像素),该标签还可以根据文本的长度自动调整文本的大小。

到目前为止,我只能让标签自动调整大小来包装文本并将其停靠在底部。但它在左下角而不是中间。 在这个例子中,Long Text ImageImage of short text I'd like to center对不起,文字不清楚,但它在底部是白色的

我能够使用 ClientSizeChanged 事件实现自动大小,如下所示。

private void Panel1_ClientSizeChanged(object sender, EventArgs e)
    {
        label8.MaximumSize = new Size((sender as Control).ClientSize.Width - label8.Left, 10000);
    }

如何将文本放在中间?当我调整面板大小时,它应该能够保持底部中间(停靠)位置。

【问题讨论】:

  • 你不能使用 Dock= Bottom 和 TextAlign = MiddleCenter/BottomCenter 吗?
  • @PablonotPicasso 如果 autosize 属性设置为 true 并且我需要自动调整大小,则它不起作用。

标签: c# winforms controls docking


【解决方案1】:

尝试以下操作:

在您的面板中添加具有以下属性的 TableLayoutPanel:

tableLayoutPanel1.AutoSize = true; // This can be set at the end if you use designer
tableLayoutPanel1.ColumnCount = 1;
tableLayoutPanel1.RowCount = 1;
tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
panel1.Controls.Add(tableLayoutPanel1); // add TableLayoutPanel to your panel
tableLayoutPanel1.Controls.Add(label1, 0, 0); // Add your label to TableLayout

并在标签上设置属性:

label1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
label1.AutoSize = true;
label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;

现在可以设置了

tableLayoutPanel1.AutoSize = true;

这有点棘手,但应该可以满足您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    相关资源
    最近更新 更多