c#WinForm固定窗口大小

c#WinForm固定窗口大小

1.不显示最大化和最小化

   this.MaximizeBox =false;

   this.MinimizeBox =false;

 

2. 设置FormBorderStyle 窗体的边框样式

   //默认可调整大小的边框模式

   this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;

   //固定的三维边框

   this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;

   换成其它就可以 也可以自己设计边框

   以上设置完即可固定窗体大小

3.设置窗体出现的位置

   //出现在屏幕正中央

   this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

 

其它方式也可以 以上的属性可直接通过设计界面赋值

### C# WinForms 控件自适应窗口大小的方法 #### 使用 Anchoring 和 Docking 属性 Anchoring 和 Docking 是两种常用的属性,可以用来定义控件相对于其父容器的行为。通过设置 `Anchor` 或者 `Dock` 属性,可以使控件随着窗体的变化而自动调整位置和大小。 - **Anchor**: 设置此属性可以让控件保持与指定边缘的距离不变。当窗体被拉伸时,锚定到相应边界的控件也会随之移动或扩展。 - **Dock**: 此属性允许控件填充整个可用空间或者是特定的一侧区域。如果设置了 `Dock.Fill`,那么该控件将会填满剩余的空间[^1]。 ```csharp // 示例:将按钮停靠在窗体底部中央 button.Dock = DockStyle.Bottom; ``` #### TableLayoutPanel 和 FlowLayoutPanel 容器控件 这两种面板提供了更复杂的布局管理方式: - **TableLayoutPanel**: 将子控件放置在一个表格结构内,并支持按比例分配列宽和行高。这使得内部控件能够按照设定的比例来响应外部尺寸变化。 - **FlowLayoutPanel**: 可以让所含有的控件像流一样排列,在水平方向上达到边界后会转至下一行继续排列。它同样可以根据需要动态增加新行/列。 ```csharp // 创建一个新的 TableLayoutPanel 并添加一些控件 var tableLayout = new TableLayoutPanel(); tableLayout.ColumnCount = 2; // 设定两列 tableLayout.RowCount = 2; // 设定两行 tableLayout.Controls.Add(new Button(), 0, 0); tableLayout.Controls.Add(new TextBox(), 1, 0); this.Controls.Add(tableLayout); ``` #### AutoSizeMode 属性 对于某些类型的控件来说,还可以利用 `AutoSizeMode` 来控制它们如何增长或缩小。这个特性特别适用于那些具有固定宽度但希望能够在高度方面有所灵活性的情况。 #### 处理 Resize 事件手动调整 除了上述自动化手段外,也可以监听窗体的 `Resize` 事件并在其中编写代码来自定义各个控件的具体行为。这种方法虽然较为繁琐但也给予了最大的自由度去定制化界面的表现形式[^2]。 ```csharp private void MainForm_Resize(object sender, EventArgs e) { foreach (Control control in this.Controls) { int newX = Convert.ToInt32((double)control.Tag * ((float)this.ClientSize.Width / originalWidth)); int newY = Convert.ToInt32((double)(originalYOffset + (int)((float)newX / ratio))); control.Location = new Point(newX, newY); control.Size = new Size(Convert.ToInt32(control.PreferredSize.Width * scale), Convert.ToInt32(control.PreferredSize.Height * scale)); } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

das白

感谢认可!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值