C# 如何解决使窗体透明的调整大小错误?

C# 如何解决使窗体透明的调整大小错误?,c#,winforms,resize,transparent,C#,Winforms,Resize,Transparent,我有一个代码是一个没有边框的表单,它的大小取决于一个字符串 就像一张通知单 有时,窗体的大小不能正确调整,并且部分窗体看起来是透明的 我知道它是透明的,因为透明部分调用所有事件,比如单击或鼠标滚轮,即使我在后台看到程序。 并检查了窗体的宽度属性及其OK,其大于显示的部分 这是表单更改大小的代码,这是它更改颜色或大小的唯一方法 私有无效更改通知(字符串Noti,C色) { string[]line=Noti.Split(新[]{'\r','\n'}); 字符串Max=“”; Lines.ToLis

我有一个代码是一个没有边框的表单,它的大小取决于一个字符串

就像一张通知单

有时,窗体的大小不能正确调整,并且部分窗体看起来是透明的

我知道它是透明的,因为透明部分调用所有事件,比如单击或鼠标滚轮,即使我在后台看到程序。 并检查了窗体的宽度属性及其OK,其大于显示的部分

这是表单更改大小的代码,这是它更改颜色或大小的唯一方法

私有无效更改通知(字符串Noti,C色)
{
string[]line=Noti.Split(新[]{'\r','\n'});
字符串Max=“”;
Lines.ToList().ForEach(s=>
{
如果(s.长度>最大长度)
Max=s;
});
使用(System.Drawing.Graphics Graphics=System.Drawing.Graphics.FromImage(新位图(1,1)))
{
SizeF size=graphics.MeasureString(Max,lblInfo.Font);
宽度=(int)size.Width+scroll.Width+40;
高度=Lines.Count()*(int)size.Height;
顶部=屏幕.PrimaryScreen.WorkingArea.Height-高度;
左=Screen.PrimaryScreen.WorkingArea.Width-宽度;
}
this.BackColor=C;
lblInfo.Text=Noti;
}
我发送完全相同的文本,有时它会正确更改其大小

示例失败:

确定示例:

只需将标签粘贴到字符串内容上,然后根据标签调整表单大小即可。它也适用于多行字符串。为什么所有的测量

public void ChangeNotification(string Noti, Color C)
{
    lblInfo.Text = Noti;
    this.BackColor = C;
    this.Size = new Size(lblInfo.Size.Width + lblInfo.Location.X * 2, lblInfo.Size.Height + lblInfo.Location.Y * 2);
    this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - Width, Screen.PrimaryScreen.WorkingArea.Height - Height);
}
只需将标签粘贴到字符串的内容上,然后在此基础上调整表单的大小。它也适用于多行字符串。为什么所有的测量

public void ChangeNotification(string Noti, Color C)
{
    lblInfo.Text = Noti;
    this.BackColor = C;
    this.Size = new Size(lblInfo.Size.Width + lblInfo.Location.X * 2, lblInfo.Size.Height + lblInfo.Location.Y * 2);
    this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - Width, Screen.PrimaryScreen.WorkingArea.Height - Height);
}

谢谢,它解决了这个问题。我不知道AutoSize也包括新品。不客气!。。。如果这解决了你的问题,那么接受它作为答案和/或投票谢谢,它解决了这个问题。我不知道AutoSize也包括新品。不客气!。。。如果这解决了你的问题,那么接受它作为答案和/或投票