2013-08-16 39 views
3

我正在編寫程序WPF(c#)。我住在伊朗,所以我的語言是波斯語(right to left)。我想用更多按鈕或其他控件製作自定義MessageBox模擬MessageBox.Show()

我使用簡單的Window來顯示消息。在C#中,當MessageBox顯示時,用戶無法單擊或使用其他窗口做任何事情。我怎麼能simulate這個,在我的窗口?

在前面我使用了WPFCustomeMessageBox庫。請不要轉介給我。

+2

你可以用'Window.ShowDialog'獲得一個模態對話框。請參閱[MSDN](http://msdn.microsoft.com/de-de/library/system.windows.window_methods.aspx)。 –

+0

@ bash.d這並沒有解決將文本對齊爲從右到左的問題,這就是他首先使用的不是MessageBox的原因。 –

+0

好友,仔細閱讀!我在說'Window.ShowDialog()'而不是'MessageBox.ShowDialog()'。 –

回答

3

使用.ShowDialog()顯示模態對話框:直到消息對話框關閉

MyMsgBox.ShowDialog() 

這將停止執行。見MSDN Documentation

+0

This沒有解決將文本對齊爲從右到左的問題,這是他首先使用的不是MessageBox的原因。 –

+1

其實,事實並非如此。問題是關於模態對話框。仔細讀。 – SysDragon

+0

正確 - 我的錯誤。 –

1

使用Window.Showdialog,不要忘記設置窗口父,否則你會得到有趣的行爲。

然後在Window類中具有預期回報的屬性,這些屬性由對話框的結果填充。 像:沿着這個思路應該工作的

public void testDialog() 
{ 
var return = new DialogModelReturn(); 
mywindow.ShowDialog(new DialogModel(return)); 

if (return.isOk) 
{ 
} 

} 

東西。 另外:我會建議將WindowStyle設置爲none,或者至少只有一個關閉按鈕,才能使用「ModalDialog感覺」。

像這樣:

<Window x:Class="bla.bla" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Fortschritt" Icon="bla.png" Height="200" Width="600" 
     WindowStyle="None" Background="RoyalBlue"> 
+0

這並沒有解決將文本對齊爲從右到左的問題。 –

+2

這不是他的問題,他問有關模態對話功能--- –

+0

是否正確 - 我的錯誤。 –

1

編輯:看來我沒仔細看這個問題,並認爲這個問題是有關無法在消息框使用從右到左對齊(其通過MessageBoxOptions是可能的)。


還有就是MessageBox.Show()方法的重載,允許您指定MessageBoxOptions。其中一些選項是從右到左對齊。

我不知道在伊朗使用的語言(S),所以你必須嘗試用自己的文字,但在這裏是如何指定的選項(該方法的最後一個參數):

string message = "Test message."; 
string caption = "RTL Test"; 
MessageBoxImage image = MessageBoxImage.Information; 
MessageBoxButton button = MessageBoxButton.OK; 
MessageBoxResult defaultResult = MessageBoxResult.OK; 

MessageBox.Show(message, caption, button, image, defaultResult, MessageBoxOptions.RightAlign); 
MessageBox.Show(message, caption, button, image, defaultResult, MessageBoxOptions.RtlReading); 
MessageBox.Show(message, caption, button, image, defaultResult, MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign); 

這裏是一個MSDN文章有關選項的鏈接:MessageBoxOptions Enum (Winforms)