首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有什么方法可以阻止我的应用程序在Windows 7计算机上运行吗?

有什么方法可以阻止我的应用程序在Windows 7计算机上运行吗?
EN

Stack Overflow用户
提问于 2013-06-11 19:50:33
回答 3查看 277关注 0票数 3

正如标题中所建议的,我已经在使用Windows XP的计算机上的Visual Express 2010上创建了一个应用程序(windows窗体)。我在一台运行Windows7的机器上测试了这个应用程序,按钮和控件的格式变化破坏了应用程序的整体外观。

有没有办法阻止我的应用程序在Windows 7计算机上运行?

其他替代方法是检查用户使用的是什么操作系统,并根据此更改按钮/控件/等的对齐/位置。

最好的方法是什么?

提前感谢你的回答。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-11 20:00:14

只需检查您的应用程序运行的操作系统版本,如果您的程序运行在Windows7上,则退出程序,例如

代码语言:javascript
复制
if (Environment.OSVersion.ToString().Contains("Microsoft Windows NT 6.1"))
{
    //code to execute if running win 7
}
票数 4
EN

Stack Overflow用户

发布于 2013-06-11 19:57:57

你可以使用System.Environment.OSVersion,但最好的方法是让你的应用程序也能在Windows7上正常运行,你不会真的想失去安装了Windows7的客户端(尤其是现在Windows7是使用最多的版本)

票数 4
EN

Stack Overflow用户

发布于 2013-06-11 20:14:50

几乎可以肯定,您错误地识别了问题的根源。到目前为止,窗体布局损坏的最常见原因是视频适配器的DPI设置。它决定了每英寸的像素数,在Windows7上很容易更改。在XP上也可以更改,只是更难。设置是一个大问题,显示器正在变得更好,特别是随着苹果对“视网膜”显示器的推动。

通过调整Program.cs中的Main()方法来添加检查代码。使其看起来像这样:

代码语言:javascript
复制
    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var main = new Form1();
        using (var gr = main.CreateGraphics()) {
            if (gr.DpiX != 96) {
                MessageBox.Show("Sorry, didn't get this done yet.  Bye");
                Environment.Exit(1);
            }
        }
        Application.Run(main);
    }

修复表单布局当然是长期的解决方案。标准的错误是为控件提供与窗体的Font属性或其容器的Font属性不匹配的Font属性。在XP计算机上触发相同问题的一个简单方法是模拟DPI设置所做的事情。省去了在XP上查找设置和更改时必须重新启动计算机的麻烦。将此代码粘贴到表单中:

代码语言:javascript
复制
    protected override void OnLoad(EventArgs e) {
        this.Font = new Font(this.Font.FontFamily, this.Font.SizeInPoints * 120f / 96f);
        base.OnLoad(e);
    }

这相当于在Win7显示偏好中选择125%的缩放比例。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17043379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档