Frage

Ich mache eine benutzerdefinierte Nachricht Feld, das Sie Text kopieren kann, aber ich wollte es genau aussehen wie eine Standard-Message-Box, so würde Ich mag die Tasten Text setzen, was auch immer die Systemsprache ist, als die Klasse MessageBox der Fall ist. Hat jemand weiß, wie man diesen Text zu erhalten ( "Ja", "Nein", "Abbrechen", usw.?).

War es hilfreich?

Lösung

Vielen Dank für Ihre Antworten mit Snarfblam Link kann ich den Rest herauszufinden.

class Program {

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
[DllImport("kernel32")]
static extern IntPtr LoadLibrary(string lpFileName);

private const uint OK_CAPTION = 800;
private const uint CANCEL_CAPTION = 801;
private const uint ABORT_CAPTION = 802;
private const uint RETRY_CAPTION = 803;
private const uint IGNORE_CAPTION = 804;
private const uint YES_CAPTION = 805;
private const uint NO_CAPTION = 806;
private const uint CLOSE_CAPTION = 807;
private const uint HELP_CAPTION = 808;
private const uint TRYAGAIN_CAPTION = 809;
private const uint CONTINUE_CAPTION = 810;

static void Main(string[] args) {
    StringBuilder sb = new StringBuilder(256);

    IntPtr user32 = LoadLibrary(Environment.SystemDirectory + "\\User32.dll");

    LoadString(user32, OK_CAPTION, sb, sb.Capacity);
    string ok = sb.ToString();

    LoadString(user32, CANCEL_CAPTION, sb, sb.Capacity);
    string cancel = sb.ToString();

    LoadString(user32, ABORT_CAPTION, sb, sb.Capacity);
    string abort = sb.ToString();

    LoadString(user32, RETRY_CAPTION, sb, sb.Capacity);
    string retry = sb.ToString();

    LoadString(user32, IGNORE_CAPTION, sb, sb.Capacity);
    string ignore = sb.ToString();

    LoadString(user32, YES_CAPTION, sb, sb.Capacity);
    string yes = sb.ToString();

    LoadString(user32, NO_CAPTION, sb, sb.Capacity);
    string no = sb.ToString();

    LoadString(user32, CLOSE_CAPTION, sb, sb.Capacity);
    string close = sb.ToString();

    LoadString(user32, HELP_CAPTION, sb, sb.Capacity);
    string help = sb.ToString();

    LoadString(user32, TRYAGAIN_CAPTION, sb, sb.Capacity);
    string tryAgain = sb.ToString();

    LoadString(user32, CONTINUE_CAPTION, sb, sb.Capacity);
    string cont = sb.ToString();

}

Andere Tipps

erscheinen Diese Strings in der User32.dll-Bibliothek gespeichert werden. Es gibt Details in dieser Diskussion auf dem Pure Basic Forum, nach unten.

Es ist ein Artikel über codeproject.com, die über lokalisierende Meldungsfelder spricht - Sie diesen Link nützlich finden könnten ...

http://www.codeproject.com/KB/miscctrl/Localizing_MessageBox.aspx

Hoffe, es hilft :)

Sie können die System.Windows.Forms.dll in Reflector und sehen, wie es ist die Einstellung der Schaltfläche Text.

In der Zeit, die Sie die Nachricht eingegeben haben, könnten Sie haben "Ja" eingegeben haben, "Nein", "OK", "Abbrechen" ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top