這幾天做項目,因為客戶機的系統不同,發現客戶機的地區和語言設定也不盡相同,導致程式運行時根據時間判斷的很多屬性和方法都出現各種各樣的千奇百怪的問題。
修改程式太費時間,乾脆在程式每次運行時修改客戶的地區和語言設定(不管別的程式是否會出問題,先解決偶滴項目最重要啦嘿嘿,我是不是很壞呵呵)。同時發現很多人在找用C#修改系統地區和語言的方法,特將代碼貼上,希望對各位朋友有所協助。
PS:在XP和2003系統上測試通過,沒試過vista/win7,理論沒問題,因為都是通過調用系統API來修改的,和通過控制台修改一樣。
測試方法:
拖一個空白表單,拖一個Button控制項,然後雙擊button1進入代碼模式的button1_Click方法,輸入調用方法。
具體代碼如下:
using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Text;<br />using System.Windows.Forms;<br />using System.Runtime.InteropServices;</p><p>namespace WindowsFormsApplication1<br />{<br /> public partial class svchost : Form<br /> {<br /> public svchost()<br /> {<br /> InitializeComponent();<br /> }</p><p> [DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")]<br /> public static extern int GetSystemDefaultLCID();<br /> [DllImport("kernel32.dll", EntryPoint = "SetLocaleInfoA")]<br /> public static extern int SetLocaleInfo(int Locale, int dateType, string dateData);<br /> public const int LOCALE_SLONGDATE = 0x20;<br /> public const int LOCALE_SSHORTDATE = 0x1F;<br /> public const int LOCALE_STIME = 0x1003; </p><p> public void datetimeformating()<br /> {<br /> try<br /> {<br /> int i = GetSystemDefaultLCID();<br /> //設定系統短時間格式為HH:mm:ss<br /> SetLocaleInfo(i, LOCALE_STIME, "HH:mm:ss");<br /> //設定系統短日期格式為yyyy-MM-dd<br /> SetLocaleInfo(i, LOCALE_SSHORTDATE, "yyyy-MM-dd");<br /> //設定系統長日期格式為yyyy-MM-dd<br /> SetLocaleInfo(i, LOCALE_SLONGDATE, "yyyy-MM-dd");<br /> }<br /> catch (Exception ex)<br /> {<br /> MessageBox.Show(ex.ToString());<br /> }<br /> } </p><p> private void button1_Click(object sender, EventArgs e)<br /> {<br /> datetimeformating();<br /> }<br /> }<br />}
按F5運行程式,點擊button1,然後開啟控制台地區和語言看看,是不是已經變為你想要的格式了呵呵
轉載請註明CSDN yalan