Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 面板大小不变。宽度不变_C#_Winforms_Panel - Fatal编程技术网

C# 面板大小不变。宽度不变

C# 面板大小不变。宽度不变,c#,winforms,panel,C#,Winforms,Panel,大家好 问题: 创建面板构件并为其指定控件时,使用 自动调整大小=真 width属性完全不变,大小保持不变(X:200,Y:100与拖放面板大小类似) 这个小组是 p组 面板的宽度在显示时会发生变化(从视觉上看,宽度有所不同),但如果将messagebox的宽度显示在designtime上,则面板显示为200 我做错了什么 public void AddMessage(position pos, string owner, string _message) { /// &

大家好

问题:

创建面板构件并为其指定控件时,使用

自动调整大小=真

width属性完全不变,大小保持不变(X:200,Y:100与拖放面板大小类似)

这个小组是

p组

面板的宽度在显示时会发生变化(从视觉上看,宽度有所不同),但如果将messagebox的宽度显示在designtime上,则面板显示为200

我做错了什么

public void AddMessage(position pos, string owner, string _message)
    {
        /// <summary>
        /// Add's a label message panel to a parent panel
        /// </summary>
        /// <param name="pos">Use enum position, left is for message sent by you, right is message recieved.</param>
        /// <param name="_message">Message to display</param>
        owner += " :";

        Panel p = new Panel()
        {
            MaximumSize = new Size(((int)Math.Round(this.Width * 0.8, 0)), int.MaxValue),
            BackColor = (pos == position.left) ? Color.LightGreen : Color.LightSkyBlue,
            AutoSize = false
        };
        Font bold = new Font(this.Font.FontFamily, float.Parse((this.Font.Size*1.1).ToString()), FontStyle.Bold);
        Label O = new Label()
        {
            Location = new Point(_LABEL_MARGIN, _LABEL_MARGIN),
            AutoSize = true,
            Margin = new Padding(_LABEL_MARGIN),
            MaximumSize = new Size((int)Math.Round(p.MaximumSize.Width * 0.38, 0), int.MaxValue),
            Size = TextRenderer.MeasureText(owner, bold, new Size((int)Math.Round((p.MaximumSize.Width) * 0.38, 0), int.MaxValue), TextFormatFlags.EndEllipsis),
            Font = bold,
            Text = owner
        };
        MultiLineLabel l = new MultiLineLabel()
        {
            Location = new Point(O.Width + 5, _LABEL_MARGIN),
            AutoSize = false,
            Margin = new Padding(_LABEL_MARGIN),
            MaximumSize = new Size(p.MaximumSize.Width - p.Margin.All, p.MaximumSize.Height - p.Margin.All),
            Size = TextRenderer.MeasureText(_message, this.Font, new Size(p.MaximumSize.Width - _LABEL_MARGIN - O.Width - O.Left, int.MaxValue), TextFormatFlags.WordBreak),
            Top = Top +3,
            Text = _message

        };
        p.Controls.Add(O);
        p.Controls.Add(l);
        p.Location = new Point((pos == position.left) ? 10 :(this.Width - (p.Width + 10)), lastTop);
        lastTop = _OBJEcT_BUFFER + p.Top + p.Height;
        this.Controls.Add(p);
    }
public void AddMessage(位置位置、字符串所有者、字符串\u消息)
{
/// 
///将标签消息面板添加到父面板
/// 
///使用枚举位置,左侧表示您发送的消息,右侧表示收到的消息。
///要显示的消息
所有者+=“:”;
面板p=新面板()
{
MaximumSize=新大小((int)数学圆(this.Width*0.8,0)),int.MaxValue),
背景色=(位置==位置.左)?Color.LightGreen:Color.LightSkyBlue,
自动调整大小=错误
};
Font bold=新字体(this.Font.fontflash,float.Parse((this.Font.Size*1.1.ToString()),FontStyle.bold);
标签O=新标签()
{
位置=新点(_标签_边距,_标签_边距),
AutoSize=true,
边距=新的填充(_标签_边距),
MaximumSize=新尺寸((int)数学圆整(p.MaximumSize.Width*0.38,0),int.MaxValue),
大小=TextRenderer.MeasureText(所有者,粗体,新大小((int)数学圆((p.MaximumSize.Width)*0.38,0),int.MaxValue),TextFormatFlags.EndEllipsis),
字体=粗体,
Text=所有者
};
MultiLineLabel l=新的MultiLineLabel()
{
位置=新点(O.宽度+5,_标签_边距),
AutoSize=false,
边距=新的填充(_标签_边距),
MaximumSize=新尺寸(p.MaximumSize.Width-p.Margin.All,p.MaximumSize.Height-p.Margin.All),
Size=TextRenderer.MeasureText(_message,this.Font,新大小(p.MaximumSize.Width-_LABEL_MARGIN-O.Width-O.Left,int.MaxValue),TextFormatFlags.WordBreak),
顶部=顶部+3,
Text=\u消息
};
p、 控件。添加(O);
p、 添加(l);
p、 位置=新点((位置==位置.左)?10:(this.Width-(p.Width+10)),最后一个顶部);
lastTop=\u对象\u缓冲区+p.顶部+p.高度;
本.Controls.Add(p);
}

AutoScroll
:获取或设置一个值,该值指示容器是否允许用户滚动到位于其可见边界之外的任何控件。@MikkoViitala抱歉,我的意思是自动调整大小,请参阅问题的更新帖子(“…但在设计时间上放置messagebox显示的宽度显示面板的宽度为200”)问题是在设计期间?您从未设置面板控件的宽度,因此最终使用控件的默认宽度设置…200。