【C#】判断当前操作系统
2017-03-06 10:09
211 查看
写一个判断操作系统的工具类OSHelper.cs
问题来源:
做WPF的时候,发现部分UI在不同操作系统下的表现不一致,例如ListBox中的元素Item在Win10中水平间距自动平均分的,即指定了Item的宽高,但不指定Margin,会自动计算出Margin以平均间距,但是在Win8中不会如此,即所有Item靠左对齐,导致右边有一段空白。所以需要根据不同OS做UI的适配。
根据这一问题,解决办法是在XAML中ListBox使用< ListBox.ItemTemplate >< DataTemplate >,然后将Margin=”{Binding Margin}”使用MVVM绑定界面属性到ViewModel中,然后给ItemsSource绑定的列表中的实体类新增这个Margin属性(类型最好是Thickness,如果只有一个值也可以是int)。
重要的参考:
http://blog.csdn.net/yl2isoft/article/details/17336329
https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms724834(v=vs.85).aspx
public class OSHelper { // 获取操作系统ID public static System.PlatformID GetPlatformID() { //获取系统信息 System.OperatingSystem osInfo = System.Environment.OSVersion; //获取操作系统ID System.PlatformID platformID = osInfo.Platform; return platformID; } // 获取主版本号 public static int GetVersionMajor() { //获取系统信息 System.OperatingSystem osInfo = System.Environment.OSVersion; //获取主版本号 int versionMajor = osInfo.Version.Major; return versionMajor; } // 获取副版本号 public static int GetVersionMinor() { //获取系统信息 System.OperatingSystem osInfo = System.Environment.OSVersion; //获取副版本号 int versionMinor = osInfo.Version.Minor; return versionMinor; } //C#判断操作系统是否为Windows98 public static bool IsWindows98 { get { return (Environment.OSVersion.Platform == PlatformID.Win32Windows) && (Environment.OSVersion.Version.Minor == 10) && (Environment.OSVersion.Version.Revision.ToString() != "2222A"); } } //C#判断操作系统是否为Windows98第二版 public static bool IsWindows98Second { get { return (Environment.OSVersion.Platform == PlatformID.Win32Windows) && (Environment.OSVersion.Version.Minor == 10) && (Environment.OSVersion.Version.Revision.ToString() == "2222A"); } } //C#判断操作系统是否为Windows2000 public static bool IsWindows2000 { get { return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 0); } } //C#判断操作系统是否为WindowsXP public static bool IsWindowsXP { get { return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 1); } } //C#判断操作系统是否为Windows2003 public static bool IsWindows2003 { get { return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 2); } } //C#判断操作系统是否为WindowsVista public static bool IsWindowsVista { get { return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 0); } } //C#判断操作系统是否为Windows7 public static bool IsWindows7 { get { return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 1); } } //C#判断操作系统是否为Unix public static bool IsUnix { get { return Environment.OSVersion.Platform == PlatformID.Unix; } } //利用C#判断当前操作系统是否为Win8系统 public static bool IsWindows8() { Version currentVersion = Environment.OSVersion.Version; Version compareToVersion = new Version("6.2"); if (currentVersion.CompareTo(compareToVersion) >= 0) return true; else return false; } }
问题来源:
做WPF的时候,发现部分UI在不同操作系统下的表现不一致,例如ListBox中的元素Item在Win10中水平间距自动平均分的,即指定了Item的宽高,但不指定Margin,会自动计算出Margin以平均间距,但是在Win8中不会如此,即所有Item靠左对齐,导致右边有一段空白。所以需要根据不同OS做UI的适配。
根据这一问题,解决办法是在XAML中ListBox使用< ListBox.ItemTemplate >< DataTemplate >,然后将Margin=”{Binding Margin}”使用MVVM绑定界面属性到ViewModel中,然后给ItemsSource绑定的列表中的实体类新增这个Margin属性(类型最好是Thickness,如果只有一个值也可以是int)。
重要的参考:
http://blog.csdn.net/yl2isoft/article/details/17336329
https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms724834(v=vs.85).aspx
相关文章推荐
- 利用C#判断当前操作系统是否为Win8及其以上版本的系统
- C#下判断当前操作系统代码
- C#判断当前操作系统
- 如何判断当前操作系统的版本
- c# winform中如何判断DataGrid当前选中的是空白行,并根据选择控制按钮是否可用
- c#中判断操作系统是否为64位还是32位
- C#判断操作系统类型总结
- VC++如何判断当前操作系统是32位还是64位?
- C#中判断当前登录的用户是否是系统管理员的方法
- 用C#使用API即时判断当前的网络的连接方式
- C#判断当前激活的是哪个程序(DllImport用法说明)
- C#判断操作系统的位数
- JAVA判断当前操作系统环境是xp还是linux
- .Net - C# 如何判断程序里某个窗体是否为Windows的当前活动窗体?(附代码)
- C#判断当前系统当前时区是否使用夏令时(夏时制)
- C#判断当前运行环境是否64bit
- 在C#里怎样获得当前Windows操作系统的语言种类?以及如何知道当前Windows版本?
- C#判断当前系统服务存在否
- c#判断是否是64位操作系统方法
- C# 中得到当前操作系统、操作系统的版本、.NET 运行环境等信息