2010-09-27 4 views
2

Я бы хотел, чтобы текст на кнопках MessageBox был, скажем, на русском, французском и т. Д. - на другом языке, чем он задан по умолчанию в Windows.Изменить язык для текста кнопки MessageBox

Есть ли способ сделать это, не создавая свои собственные MessageBox?

ответ

3

Не тратьте на это много времени и энергии. Пользователь вашего приложения всегда получит окно с сообщением, с которым она знакома. Он покажет текст, соответствующий ее языку, как и остальная часть Windows. Кто-то, кто говорит по-русски как свой родной язык, не собирается переходить на французский язык на лету. Если она действительно делает, то она приобрела лицензию на Ultimate edition Windows, которая позволит быстро изменить язык Windows.

Ваше приложение будет следовать этому примеру, если вы не переопределяете культуру по умолчанию и не локализируете свое приложение. Помните, что переопределение культуры по умолчанию в потоке пользовательского интерфейса - очень опасная вещь, потоки потоков, которые .NET использует (или вы, если на то пошло), все еще работают на языке по умолчанию. Это может вызвать очень тонкие проблемы из-за различных правил сравнения строк. Например, SortedList, заполненный одним потоком, внезапно не будет сортироваться больше в другом потоке, что приведет к сбою бинарного поиска.

+0

Спасибо, отличный ответ, как обычно. – 26071986

0

Изменить Localizable Недвижимость в вашей форме до True. Затем установите язык, изменив свойство Language.

+0

Пробовал. Никакой реакции. – 26071986

+0

Хорошо, я нашел эту статью здесь, которая может вам помочь: http://www.codeproject.com/KB/miscctrl/Localizing_MessageBox.aspx – Ruel

1

System.Windows.Forms.MessageBox основан на функции MessageBox, присутствующей в user32.dll, которая использует текущий системный язык для отображения текста на кнопках. Я не знаю, есть ли способ переопределить это, и перелистывание собственного окна сообщений выглядит как лучший вариант.

Смежные вопросы