解决C#窗体因为窗体的分辨率改变而控件错位.

来源:互联网 发布:golang java 开发效率 编辑:程序博客网 时间:2024/06/13 01:41
1.控件必须放在一个panel中(可能其他也行,没试。。。);
2.from类中添加一个函数,并添加form的sizechanged事件,如下:
C# code
public void AutoResize(Form frm) { frm.Tag = frm.Width.ToString() + "," + frm.Height.ToString(); frm.SizeChanged += new EventHandler(Form1_SizeChanged); }

事件如下:
C# code
private void Form1_SizeChanged(object sender, EventArgs e) { string[] tmp = ((Form)sender).Tag.ToString().Split(','); float width = (float)((Form)sender).Width / (float)Convert.ToInt16(tmp[0]); float heigth = (float)((Form)sender).Height / (float)Convert.ToInt16(tmp[1]); ((Form)sender).Tag = ((Form)sender).Width.ToString() + "," + ((Form)sender).Height; foreach (Control control in ((Form)sender).Controls) { control.Scale(new SizeF(width, heigth)); } }

3.在构造函数中调用AutoResize函数,如下:
C# code
public Form1()        {            InitializeComponent();            AutoResize(this);//函数调用        }



原文转至xuezhe521的http://topic.csdn.net/u/20120829/10/5309914f-8bc9-428a-9825-c9dcd8577a26.html

原创粉丝点击