我需要從C#Winforms應用程序中知道底層O/S的當前語言環境/文化的默認頁面大小(例如A4或Letter)。以編程方式閱讀Windows的語言環境設置
我已經看到MSDN的一個頁面解釋這一點,但我失去了鏈接。我怎樣才能做到這一點?
我需要從C#Winforms應用程序中知道底層O/S的當前語言環境/文化的默認頁面大小(例如A4或Letter)。以編程方式閱讀Windows的語言環境設置
我已經看到MSDN的一個頁面解釋這一點,但我失去了鏈接。我怎樣才能做到這一點?
new PrinterSettings().DefaultPageSettings.PaperSize;
我認爲u需要爲this。不是區域設置。
http://msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.papersize.aspx
要清楚,這是特定打印機的紙張尺寸 – 2011-06-14 09:49:38
參見此:
使用System.Drawing.Printing;
private void button1_Click(object sender, EventArgs e)
{
PrintDocument doc = new PrintDocument();
PageSettings ps = doc.DefaultPageSettings;
if (ps.Landscape)
label1.Text = "LANDSCAPE";
PaperSize paperSize = ps.PaperSize;
}
還有很多其他ps屬性可用,您可以使用。
對於懶惰的,下面是@logeeks的回答將使用代碼:
[DllImport("kernel32.dll", SetLastError = true)]
static extern int GetLocaleInfo(
uint Locale,
uint LCType,
[Out] StringBuilder lpLCData,
int cchData);
public enum LCType : uint
{
LOCALE_IPAPERSIZE = 0x0000100A, // 1 = letter, 5 = legal, 8 = a3, 9 = a4
}
void Main()
{
//CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
CultureInfo culture = CultureInfo.GetCultureInfo("de-DE"); ;
var output = new StringBuilder();
int result = GetLocaleInfo((uint)(culture.LCID), (uint)LCType.LOCALE_IPAPERSIZE, output, 99);
if (result > 0)
{
// 1 = letter, 5 = legal, 8 = a3, 9 = a4
Console.WriteLine(output.ToString());
}
else
{
Console.WriteLine("fail");
}
}
參考文獻:
我不覺得默認的紙張尺寸爲系統區域設置的一部分。但MS Office有這樣的設置。 – 2011-06-14 09:25:08
我在某處看到一個名爲類似ILocale.PageSize的常量。我正在尋找它, – jadedboy 2011-06-14 09:35:20