[英]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.