【转】【C#】判断当前操作系统

写一个判断操作系统的工具类OSHelper.cs

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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值