2011-06-14 121 views
2

我需要從C#Winforms應用程序中知道底層O/S的當前語言環境/文化的默認頁面大小(例如A4或Letter)。以編程方式閱讀Windows的語言環境設置

我已經看到MSDN的一個頁面解釋這一點,但我失去了鏈接。我怎樣才能做到這一點?

+0

我不覺得默認的紙張尺寸爲系統區域設置的一部分。但MS Office有這樣的設置。 – 2011-06-14 09:25:08

+0

我在某處看到一個名爲類似ILocale.PageSize的常量。我正在尋找它, – jadedboy 2011-06-14 09:35:20

回答

1
new PrinterSettings().DefaultPageSettings.PaperSize; 
0

參見此:

使用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屬性可用,您可以使用。

0

對於懶惰的,下面是@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"); 
    } 
} 

參考文獻:

相關問題