首页 > 解决方案 > Winforms - 标签的大小未正确更新

问题描述

我正在尝试在 Winform 的标签中显示矩阵。当矩阵小于父内容时,我希望它位于中心,而当它更大时,我希望它位于左上角并显示滚动条。

此标签的父级是具有 AutoScroll 设置为 True 的面板,我正在使用 TextChanged 事件。这是我的代码:

matrix1Content.TextChanged += matrixContent_TextChanged;

...

private void matrixContent_TextChanged(object sender, EventArgs e)
{
    Label matrixContent = (Label)sender;
    Panel matrixPanel = (Panel)matrixContent.Parent;

    matrixContent.AutoSize = true;

    if (matrixContent.Size.Width > matrixPanel.Size.Width || matrixContent.Size.Height > matrixPanel.Size.Height)
    {
        matrixContent.Location = new Point(0, 0);
        matrixContent.Dock = DockStyle.None;
    }
    else
    {
        matrixContent.AutoSize = false;
        matrixContent.Dock = DockStyle.Fill;
    }

    Debug.WriteLine(matrixContent.Size, matrixContent.Name);
}

当我第一次设置新文本时,一切都按我的意愿工作: 第一次设置新矩阵

问题是当我试图在更大的矩阵之后设置更小的矩阵: 大后设置小矩阵

第一个矩阵位于左上角而不是中心。从调试中我看到,即使文本发生了变化,标签的大小仍然相同。

调试器视图

然后我尝试设置另一个较小的矩阵它工作正常:

现在工作正常

帮助。

标签: c#winforms

解决方案


推荐阅读