gpt4 book ai didi

c# - TableLayoutPanel 中的列大小在设计器中不断变化

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:24 25 4
gpt4 key购买 nike

我向我的用户控件添加了一个 tableLayoutPanel。

It is not docked or anchored.
It has 4 columns and 4 rows.
The items within each cell are docked fully within each cell.

列的大小设置如下。

-Column 1 - Percent - 100%
-Column 2 - Absolute - 25
-Column 3 - Absolute - 35
-Column 4 - Absolute - 25

据我所知,绝对值应始终保持正确的大小,然后第 1 列应占用其余空间。

当我最初创建控件时,一切看起来都很好。我会回到我的程序的其他一些区域进行编码并不重要,并且在某个时候我会回到我的 tableLayoutPanel 所在的设计器,第四列将比以前更大。所以我必须打开 Column and Row Styles 编辑器并将 Column 的大小改回 25。

如何让这些设置生效?这让我发疯!

这里是我的设计师代码。

        // 
// tableLayoutPanel1
//
this.tableLayoutPanel1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.OutsetDouble;
this.tableLayoutPanel1.ColumnCount = 4;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 35F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.tableLayoutPanel1.Controls.Add(this.label8, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.btnStartingUp, 3, 3);
this.tableLayoutPanel1.Controls.Add(this.txtOffset, 2, 3);
this.tableLayoutPanel1.Controls.Add(this.btnDurationUp, 3, 2);
this.tableLayoutPanel1.Controls.Add(this.label10, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.btnFrequencyUp, 3, 1);
this.tableLayoutPanel1.Controls.Add(this.txtFrequency, 2, 1);
this.tableLayoutPanel1.Controls.Add(this.btnPowerUp, 3, 0);
this.tableLayoutPanel1.Controls.Add(this.label9, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.txtLaserPower, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.label7, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.btnPowerDown, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.btnFrequencyDown, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.btnDurationDown, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.btnOffsetDown, 1, 3);
this.tableLayoutPanel1.Controls.Add(this.txtDuration, 2, 2);
this.tableLayoutPanel1.Location = new System.Drawing.Point(61, 610);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel1.MaximumSize = new System.Drawing.Size(208, 98);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 21F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 21F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 21F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 21F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(208, 98);
this.tableLayoutPanel1.TabIndex = 168;

最佳答案

不是 100% 确定,但在 TableLayoutPanel 中放置标签后,我能够重现该问题。

当标签的 AutoSize=true 被设置时,它似乎导致了列调整大小的问题。

当我更改所有 Label 的 AutoSize=false 时,问题消失了,列大小保持不变。

TextBoxes 也有干扰,因为它们有一个 AutoSize 属性(在设计器或代码中不可见)来控制控件的高度。设置文本框 MultiLine=true 没有帮助。

创建我自己的文本框,我专门设置了 AutoSize=false 解决了这个问题:

public class TextBoxEx : TextBox {
public TextBoxEx() {
this.AutoSize = false;
}
}

关于c# - TableLayoutPanel 中的列大小在设计器中不断变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946994/

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