簡體   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