C# 程序界面 分辨率 变化
我在一台1366*768的电脑上写的开发的程序,在开发电脑上显示很正常,但我把release的软件拷到另一台同样分辨率1366*768的电脑上,却显示不正常,特别是lis...
我在一台1366 *768的电脑上写的开发的程序,在开发电脑上显示很正常,但我把release的软件拷到另一台同样分辨率1366*768的电脑上,却显示不正常,特别是listbox这个控件,在开发电脑上排的很好,没有vertical滚动条,但到别的电脑上,就显示不全,出现了滚动条。
要说换了分辨率出现程序界面变化我还能理解,怎么同样的分辨率,也有变化啊?
谁知道如何控制这个程序界面的适应性啊? 展开
要说换了分辨率出现程序界面变化我还能理解,怎么同样的分辨率,也有变化啊?
谁知道如何控制这个程序界面的适应性啊? 展开
4个回答
展开全部
程序会自适应分辨率的,即时你更换了分辨率,也应该不会有变化,除非你自己写了根据分辨率不同或窗口尺寸改变时修改控件尺寸或位置的代码,甚至重写了PAINT方法,就可能出现错误,但仅仅是出现垂直滚动条的话,应该不是这些原因引起的,首先看你是否使用了特殊的字体或者对方电脑更换了系统默认字体,有可能引起列表项尺寸的变化,如果数据是来自数据库,还要考虑数据的差异,最便捷的方式就是在目标机器上DEBUG或者在程序中的关键位置写DEBUG代码到目标机器上运行获取差异信息。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
具体代码如下:
// 改变分辨率
public ChangeResolution(int width, int height)
{
// 初始化 DEVMODE结构
DEVMODE devmode = new DEVMODE();
devmode.dmDeviceName = new String(new char[32]);
devmode.dmFormName = new String(new char[32]);
devmode.dmSize = (short)Marshal.SizeOf(devmode);
if (0 != NativeMethods.EnumDisplaySettings(null, NativeMethods.ENUM_CURRENT_SETTINGS, ref devmode))
{
devmode.dmPelsWidth = width;
devmode.dmPelsHeight = height;
// 改变屏幕分辨率
int iRet = NativeMethods.ChangeDisplaySettings(ref devmode, NativeMethods.CDS_TEST);
if (iRet == NativeMethods.DISP_CHANGE_FAILED)
{
MessageBox.Show("不能执行你的请求", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
iRet = NativeMethods.ChangeDisplaySettings(ref devmode, NativeMethods.CDS_UPDATEREGISTRY);
switch (iRet)
{
// 成功改变
case NativeMethods.DISP_CHANGE_SUCCESSFUL:
{
break;
}
case NativeMethods.DISP_CHANGE_RESTART:
{
MessageBox.Show("你需要重新启动电脑设置才能生效", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
default:
{
MessageBox.Show("改变屏幕分辨率失败", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
}
}
}
}
// 改变分辨率
public ChangeResolution(int width, int height)
{
// 初始化 DEVMODE结构
DEVMODE devmode = new DEVMODE();
devmode.dmDeviceName = new String(new char[32]);
devmode.dmFormName = new String(new char[32]);
devmode.dmSize = (short)Marshal.SizeOf(devmode);
if (0 != NativeMethods.EnumDisplaySettings(null, NativeMethods.ENUM_CURRENT_SETTINGS, ref devmode))
{
devmode.dmPelsWidth = width;
devmode.dmPelsHeight = height;
// 改变屏幕分辨率
int iRet = NativeMethods.ChangeDisplaySettings(ref devmode, NativeMethods.CDS_TEST);
if (iRet == NativeMethods.DISP_CHANGE_FAILED)
{
MessageBox.Show("不能执行你的请求", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
iRet = NativeMethods.ChangeDisplaySettings(ref devmode, NativeMethods.CDS_UPDATEREGISTRY);
switch (iRet)
{
// 成功改变
case NativeMethods.DISP_CHANGE_SUCCESSFUL:
{
break;
}
case NativeMethods.DISP_CHANGE_RESTART:
{
MessageBox.Show("你需要重新启动电脑设置才能生效", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
default:
{
MessageBox.Show("改变屏幕分辨率失败", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
}
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好!
应该和屏幕的刷新频率有关吧,你可以看看显示属性
应该和屏幕的刷新频率有关吧,你可以看看显示属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询