WINFORM 自适应分辨率问题. 我的系统主窗口中有好多控件,在1024*768时,显示没问题,改为800*600后,有些控件就显示不出来了,手动改变窗口大小时,也会出现这样的情况,在网上没搜到好的解决办法,请高手指点.谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void Form1_Resize(object sender, EventArgs e) { }在这个事件里面写一些控制你的控件变化的代码,是不是呢 很容易吧定义变量如下private List<double> dPresentW = new List<double>();private List<double> dPresentH = new List<double>();private List<double> dPresentT = new List<double>();private List<double> dPresentL = new List<double>();补充构造函数,例如:public Form1(){ InitializeComponent(); foreach (Control ctl in this.Controls) { dPresentW.Add((double)ctl.Width / (double)Width); dPresentH.Add((double)ctl.Height / (double)Height); dPresentT.Add((double)ctl.Top / (double)Height); dPresentL.Add((double)ctl.Left / (double)Height); }}然后写ReSize事件private void Form1_Resize(object sender, EventArgs e){ int iCount = Controls.Count; for (int i = 0; i < iCount; i++) { Controls[i].Left = (int)(Width * dPresentL[i]); Controls[i].Top = (int)(Height * dPresentT[i]); Controls[i].Width = (int)(Width * dPresentW[i]); Controls[i].Height = (int)(Height * dPresentH[i]); }} 如果改变了Controls,比如增加删除。那就吧这个部分优化以下。包装个类来实现。 请问这段代码中的List<double> 是2.0中新增的吗?我现在的版本是1.1,好像不能用.private List<double> dPresentW = new List<double>();private List<double> dPresentH = new List<double>();private List<double> dPresentT = new List<double>();private List<double> dPresentL = new List<double>(); to wuyazhe(牛肉面) 我改为ArrayList后,运行不报错,但是不起作用,以下是我的代码,你帮我看看哪里有问题?谢谢!定义变量如下private ArrayList dPresentW = new ArrayList();private ArrayList dPresentH = new ArrayList();private ArrayList dPresentT = new ArrayList();private ArrayList dPresentL = new ArrayList();public Form1(){InitializeComponent();foreach (Control ctl in this.Controls){dPresentW.Add((double)ctl.Width / (double)Width);dPresentH.Add((double)ctl.Height / (double)Height);dPresentT.Add((double)ctl.Top / (double)Height);dPresentL.Add((double)ctl.Left / (double)Height);}}ReSize事件private void Form1_Resize(object sender, EventArgs e){int iCount = Controls.Count;for (int i = 0; i < iCount; i++){Controls[i].Left = (int)(Width * Convert.ToDouble(dPresentW[i]));Controls[i].Top = (int)(Height * Convert.ToDouble(dPresentT[i]));Controls[i].Width = (int)(Width * Convert.ToDouble(dPresentW[i]));Controls[i].Height = (int)(Height * Convert.ToDouble(dPresentH[i]));}} 不好意思,我刚才忘了填加Resize事件了,现在是可以响应,但是把我测试用的所有TextBox都排成一列了. 功能实现了,非常感谢 wuyazhe(牛肉面). to wuyazhe受教了!非常感谢 Controls[i].Left = (int)(Width * dPresentL[i]); 索引超出范围。必须为非负值并小于集合大小。参数名: index这个是什么原因? 问个关于异常的问题. while用法? 使用C# 如何获得笔记本的型号 数据库中间件的研究方向(毕业论文求助) C#如何把横向多叉树变为纵向多叉树 请教专家指点迷津,在 C#里面,针对datagrid 的数据保存方式有哪些? 关于索引的问题~ 这个错误出现在哪里 .ctor WPF datagrid数据绑定问题 在c#中使用HTMLDocument时出现找不到类型或命名空间的错误 splitContainer能否按比例分割 用C#如何将两个XML合并为一个XML?
{ }
在这个事件里面写一些控制你的控件变化的代码,是不是呢
定义变量如下
private List<double> dPresentW = new List<double>();
private List<double> dPresentH = new List<double>();
private List<double> dPresentT = new List<double>();
private List<double> dPresentL = new List<double>();
补充构造函数,例如:
public Form1()
{
InitializeComponent(); foreach (Control ctl in this.Controls)
{
dPresentW.Add((double)ctl.Width / (double)Width);
dPresentH.Add((double)ctl.Height / (double)Height);
dPresentT.Add((double)ctl.Top / (double)Height);
dPresentL.Add((double)ctl.Left / (double)Height);
}
}然后写ReSize事件
private void Form1_Resize(object sender, EventArgs e)
{
int iCount = Controls.Count;
for (int i = 0; i < iCount; i++)
{
Controls[i].Left = (int)(Width * dPresentL[i]);
Controls[i].Top = (int)(Height * dPresentT[i]);
Controls[i].Width = (int)(Width * dPresentW[i]);
Controls[i].Height = (int)(Height * dPresentH[i]);
}
}
private List<double> dPresentH = new List<double>();
private List<double> dPresentT = new List<double>();
private List<double> dPresentL = new List<double>();
private ArrayList dPresentW = new ArrayList();
private ArrayList dPresentH = new ArrayList();
private ArrayList dPresentT = new ArrayList();
private ArrayList dPresentL = new ArrayList();public Form1()
{
InitializeComponent();foreach (Control ctl in this.Controls)
{
dPresentW.Add((double)ctl.Width / (double)Width);
dPresentH.Add((double)ctl.Height / (double)Height);
dPresentT.Add((double)ctl.Top / (double)Height);
dPresentL.Add((double)ctl.Left / (double)Height);
}
}ReSize事件
private void Form1_Resize(object sender, EventArgs e)
{
int iCount = Controls.Count;
for (int i = 0; i < iCount; i++)
{
Controls[i].Left = (int)(Width * Convert.ToDouble(dPresentW[i]));
Controls[i].Top = (int)(Height * Convert.ToDouble(dPresentT[i]));
Controls[i].Width = (int)(Width * Convert.ToDouble(dPresentW[i]));
Controls[i].Height = (int)(Height * Convert.ToDouble(dPresentH[i]));
}
}
受教了!非常感谢
索引超出范围。必须为非负值并小于集合大小。
参数名: index
这个是什么原因?