【发布时间】:2020-09-22 14:35:00
【问题描述】:
我有一个代码是一个没有边框的表单,它的大小取决于一个字符串。
就像一个通知表单,
有时表单无法正确调整大小,其中一部分看起来是透明的。
我知道它是透明的,因为透明部分会调用所有事件,例如单击或鼠标滚轮,即使我在其背景上看到程序也是如此。 并检查了表单的 Width 属性及其确定,它大于其显示的部分。
这是表单改变大小的代码,它是改变颜色或大小的唯一方法。
private void ChangeNotification(string Noti, Color C)
{
string[] Lines = Noti.Split(new[] { '\r', '\n' });
string Max = "";
Lines.ToList().ForEach(s =>
{
if (s.Length > Max.Length)
Max = s;
});
using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
{
SizeF size = graphics.MeasureString(Max, lblInfo.Font);
Width = (int)size.Width + scroll.Width + 40;
Height = Lines.Count() * (int)size.Height;
Top = Screen.PrimaryScreen.WorkingArea.Height - Height;
Left = Screen.PrimaryScreen.WorkingArea.Width - Width;
}
this.BackColor = C;
lblInfo.Text = Noti;
}
我发送完全相同的文本,有时它会正确更改其大小。
示例失败:
示例确定:
【问题讨论】:
标签: c# winforms resize transparent