繁体   English   中英

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

[英]Is there any way to prevent my application from running on Windows 7 machines?

正如标题中所建议的,我在使用Windows XP的计算机上的Visual Express 2010上创建了一个应用程序(Windows窗体)。 我在运行Windows 7的机器上测试了应用程序,按钮和控件的格式更改破坏了应用程序的一般外观。

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

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

什么是最好的方法?

提前感谢您的回答。

您可以使用System.Environment.OSVersion ,但最好的方法是让您的应用程序在Windows 7上运行并正确查看,您真的不想丢失具有Windows 7的客户端(特别是现在当它使用最多时) Windows版)

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

if (Environment.OSVersion.ToString().Contains("Microsoft Windows NT 6.1"))
{
    //code to execute if running win 7
}

你几乎肯定错误地确定了问题的根源。 到目前为止,表单布局损坏的最常见原因是视频适配器的DPI设置。 它确定了每英寸的像素数,并且在Windows 7上容易更改。它也可以在XP上更改,这样做更难。 设置是一个大问题,监视器正在变得更好,特别是苹果推动“视网膜”显示器。

通过在Program.cs中调整Main()方法来添加检查代码。 使它看起来类似于:

    [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属性或其容器不匹配。 在XP机器上触发相同问题的简单方法是模拟DPI设置的功能。 为您节省在XP上查找设置的麻烦,并在您更改时重新启动机器。 将此代码粘贴到您的表单中:

    protected override void OnLoad(EventArgs e) {
        this.Font = new Font(this.Font.FontFamily, this.Font.SizeInPoints * 120f / 96f);
        base.OnLoad(e);
    }

这相当于在Win7显示首选项中选择125%缩放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM