这几天做项目,因为客户机的系统不同,发现客户机的区域和语言设置也不尽相同,导致程序运行时根据时间判断的很多属性和方法都出现各种各样的千奇百怪的问题。
修改程序太费时间,干脆在程序每次运行时修改客户的区域和语言设置(不管别的程序是否会出问题,先解决偶滴项目最重要啦嘿嘿,我是不是很坏呵呵)。同时发现很多人在找用C#修改系统区域和语言的方法,特将代码贴上,希望对各位朋友有所帮助。
PS:在XP和2003系统上测试通过,没试过vista/win7,理论没问题,因为都是通过调用系统API来修改的,和通过控制面板修改一样。
测试方法:
拖一个空白窗体,拖一个Button控件,然后双击button1进入代码模式的button1_Click方法,输入调用方法。
具体代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class svchost : Form
{
public svchost()
{
InitializeComponent();
}
[DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")]
public static extern int GetSystemDefaultLCID();
[DllImport("kernel32.dll", EntryPoint = "SetLocaleInfoA")]
public static extern int SetLocaleInfo(int Locale, int dateType, string dateData);
public const int LOCALE_SLONGDATE = 0x20;
public const int LOCALE_SSHORTDATE = 0x1F;
public const int LOCALE_STIME = 0x1003;
public void datetimeformating()
{
try
{
int i = GetSystemDefaultLCID();
//设置系统短时间格式为HH:mm:ss
SetLocaleInfo(i, LOCALE_STIME, "HH:mm:ss");
//设置系统短日期格式为yyyy-MM-dd
SetLocaleInfo(i, LOCALE_SSHORTDATE, "yyyy-MM-dd");
//设置系统长日期格式为yyyy-MM-dd
SetLocaleInfo(i, LOCALE_SLONGDATE, "yyyy-MM-dd");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
datetimeformating();
}
}
}
按F5运行程序,点击button1,然后打开控制面板区域和语言看看,是不是已经变为你想要的格式了呵呵
转载请注明CSDN yalan