我有一个可以在两个不同设备上运行的应用程序 - 一个屏幕尺寸为240x320,另一个屏幕尺寸为480x640。
对于所有表格栏,VS生成的代码很好:
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.AutoScroll = true;
对于一种形式我正在捕捉签名。我是通过带有图形处理程序的面板来完成的;捕捉鼠标并移动事件;这会生成一个矢量点列表,我可以用它绘制线条。
在较小的分辨率屏幕上,这很好。在较高的分辨率,我无法显示我的线..我认为这是因为面板超出了窗体的大小。
创建的表单大小为240 x 268;我认为标准尺寸 - 我没有手动设置它,VS为我做了这个。
为了使面板位于高分辨率设备的正确位置,坐标为3,290;也就是说,290超过268.而且面板的宽度是448,略大于240.
我正在使用.net 2.0(以后不能使用)。我认为我需要调整表单大小以使其更大但我确实希望保留现有的重新调整表单上的其他控件的大小。
我不知道该怎么做。
答案 0 :(得分:1)
使表单停靠填充,然后使用Anchor
属性确保表单内的控件按预期调整大小。
如果您想要自定义单个控件如何调整大小的选项,则DONT在其上设置锚属性,而是处理Resize
事件并在其中的代码中执行自定义大小调整/重新定位。
例如
private void form_Resize(object sender, EventArgs e)
{
// Center the control without changing width. Other controls are anchored.
this.control.Left = (this.Width - this.control.Width) / 2;
}
答案 1 :(得分:0)
我正在写这个答案,以便将来可能遇到类似问题的人受益。 PaulG指出了我正确的方向,但我找到了其他原因。
PDA项目我使用的是“FormFactor WindowsMobile 6 Classic”,其默认大小为240 x 268。
将其更改为“Windows Mobile 6 Professional VGA”会创建更大的表单大小。
这使我能够为更大的尺寸正确定位;然后AutoScaleMode到DPI;并手动调整面板的大小使其全部工作。
IE,从大到小都很容易;我没有变得更小到更大的工作。