gpt4 book ai didi

c# - 根据文本长度调整表单大小

转载 作者:行者123 更新时间:2023-11-30 19:49:51 26 4
gpt4 key购买 nike

我正在用 C# 开发一个桌面应用程序,它每隔 X 次显示一次弹出消息。为此,我使用了一个名为 PopupNotify 的库,并且我希望包含消息(称为 NotifyMessage)的标签具有固定宽度,并在溢出时垂直放大。

他们设置了一个事件,但我无法修改它以使其工作。这是事件的代码:

    private void SetLayout() 
{
int padding = 8;
int iconRightPadding = 0;
int border = 1;

iconBox.Left = padding + border;
iconBox.Top = padding + border;
iconBox.Width = IconWidth;
iconBox.Height = IconHeight;

this.Height = iconBox.Height + 2 * padding + 2 * border;

closeButton.Left = Width - padding - border - closeButton.Width + 3;
closeButton.Top = padding + border - 3;

NotifyTitle.Top = iconBox.Top - 5; //fudge factor
NotifyTitle.Left = iconBox.Right + iconRightPadding;

NotifyMessage.Left = NotifyTitle.Left + 1; //fudgy
NotifyMessage.Width = Width - NotifyMessage.Left - padding - border;
NotifyMessage.Top = NotifyTitle.Bottom;
NotifyMessage.Height = Height - NotifyMessage.Top - padding - border;
}

我已经尝试修改它的逻辑,以及它通过添加 NotifyMessage 的高度和其他一些东西来计算高度的方式,但都没有奏效。

我将不胜感激。

最佳答案

您需要使用 TextRenderer.MeasureText 来计算所需的标签高度。这应该很接近:

public static int CalcLabelHeight(Label lbl) {
Size sz = new Size(lbl.ClientSize.Width, Int32.MaxValue);
sz = TextRenderer.MeasureText(lbl.Text, lbl.Font, sz, TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl);
int height = sz.Height;
if (height < lbl.Font.Height) height = lbl.Font.Height;
return height + lbl.Padding.Vertical;
}

从那里,设置表单的 ClientSize 属性以适应标签。

关于c# - 根据文本长度调整表单大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com