页面布局大体如下所示:Label1 TextBox1 Label2 TextBox2要怎么设置Label或者TextBox的属性,让TextBox的大小随着窗体的变化而变化,同时Label标题始终不会被遮盖,并随着TextBox的变化而变化呢
貌似是很简单就能把它设置好,但是我试了好多次都弄不好。
要在Resize事件里写代码不成。
求各路大神帮忙分析下,万分感谢。
貌似是很简单就能把它设置好,但是我试了好多次都弄不好。
要在Resize事件里写代码不成。
求各路大神帮忙分析下,万分感谢。
设置缩放率
在不同分辨率下调整控件坐标
窗体加载resize时改变坐标
原来这个问题并没有想象中的那么容易解决啊
| AnchorStyles.Right ,如果 TextBox2 的右边没有控件的话,
窗体大小改变后也只是TextBox2的大小会发生变化,其它的控件大小不会变化。
要想TextBox1的大小也发生变化,那就只能重写Resize事件
首先是textbox2右边还有2对label+textbox
其次 textbox2变大了 textbox1 不便 明显的 界面美观就下去了
估计只能重写Resize事件了
{
public Form1()
{
InitializeComponent(); var table = new TableLayoutPanel()
{
Width = this.Width,
Anchor = AnchorStyles.Left | AnchorStyles.Right,
ColumnCount = 4,
ColumnStyles =
{
new ColumnStyle(SizeType.AutoSize),
new ColumnStyle(SizeType.Percent, 50F),
new ColumnStyle(SizeType.AutoSize),
new ColumnStyle(SizeType.Percent, 50F),
},
}; var label1 = new Label { Text = "short label", AutoSize = true };
var label2 = new Label { Text = "long label xxxxxxxxxxxxxxxxxxxxxxxx", AutoSize = true };
var textbox1 = new TextBox { Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top };
var textbox2 = new TextBox { Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top }; table.Controls.Add(label1, 0, 0);
table.Controls.Add(textbox1, 1, 0);
table.Controls.Add(label2, 2, 0);
table.Controls.Add(textbox2, 3, 0);
this.Controls.Add(table);
}
}
就是有个显示全显示不全的问题,我电脑分辨率是1440*900 我可以按照这个分辨率设置最佳显示效果,等到分辨率一发生变化,有可能好多控件就显示不出来了。
当然一些大控件整个就占全部x坐标的直接设置Dock属性就可以了,
问题还是label和Text组合做表单。这个表单 要达到最佳的显示效果,真愁了我好几天了,
想如果真重写Resize事件,就权衡效率和视觉感受这两方面选那个了。