Jak Okno komunikatu wyjątek programu
Można użyć pola wiadomości wyjątków w aplikacjach znacznie więcej kontroli nad doświadczenie wiadomości niż dostarczone przez MessageBox klasyAby uzyskać więcej informacji, zobacz Wyjątek okno komunikatu programowania.Aby uzyskać informacje dotyczące sposobu uzyskania wdrożyć .dll polu wyjątek wiadomości, zobacz Wdrażanie aplikacji pole komunikat wyjątku.
Procedura
Do obsługi wyjątku w polu Komunikat wyjątku
Dodaj odwołanie projektu kod zarządzany do wirtualny plik dziennika Microsoft.ExceptionMessageBox.dll.
(Opcjonalnie) Dodaj using (C#) lub Imports ()Microsoft języka Visual Basic.Za pomocą dyrektywy netto) Microsoft.SqlServer.MessageBox obszaru nazw.
Utwórz blok try-catch do obsługi przewidywanego wyjątek.
W catch blok, utworzyć wystąpienie ExceptionMessageBox klasyPrzekazywanie Exception obsługiwane przez obiekt try—catch blok.
(Opcjonalnie) Ustaw jedną lub więcej z następujących właściwości na ExceptionMessageBox:
Buttons- ExceptionMessageBoxButtons Wyliczenie określające przyciski, aby wyświetlić komunikat wyjątku.
DefaultButton- ExceptionMessageBoxDefaultButton wyliczenia, który określa przycisk domyślny komunikat wyjątku.
Options- ExceptionMessageBoxOptions Wyliczenie umożliwiające kontrolowanie zachowania innych komunikat wyjątku.
Symbol- ExceptionMessageBoxSymbol wyliczenia, który określa symbol, aby wyświetlić komunikat wyjątku.
Wywołanie Show metoda.Przekazać okno nadrzędne, do której należy dany wyjątek okna komunikatu.
(Opcjonalnie) Zanotuj wartość zwracana DialogResult wyliczania, jeśli trzeba określić, który przycisk użytkownik kliknie.
Aby wyświetlić okno komunikatu wyjątek bez wyjątku
Dodaj odwołanie projektu kod zarządzany do wirtualny plik dziennika Microsoft.ExceptionMessageBox.dll.
(Opcjonalnie) Dodaj using (C#) lub Imports (Visual Basic.Za pomocą dyrektywy netto) Microsoft.SqlServer.MessageBox obszaru nazw.
Utworzenie wystąpienie ExceptionMessageBox klasyPrzebiegu tekstu wiadomości jako String wartości.
(Opcjonalnie) Ustaw jedną lub więcej z następujących właściwości na ExceptionMessageBox:
Buttons- ExceptionMessageBoxButtons Wyliczenie określające przyciski, aby wyświetlić komunikat wyjątku.
Caption -Okno dialogowe Podpis pola okna komunikatu wyjątek.
DefaultButton- ExceptionMessageBoxDefaultButton wyliczenia, który określa domyślny przycisk w oknie dialogowym komunikat wyjątku.
Options- ExceptionMessageBoxOptions Wyliczenie umożliwiające kontrolowanie zachowania innych komunikat wyjątku.
Symbol- ExceptionMessageBoxSymbol wyliczenia, który określa symbol, aby wyświetlić komunikat wyjątku.
Wywołanie Show metoda.Przekazać okno nadrzędne, do której należy dany wyjątek okna komunikatu.
(Opcjonalnie) Zanotuj wartość zwracana DialogResult wyliczania, jeśli trzeba określić, który przycisk użytkownik kliknie.
Aby wyświetlić okno komunikatu wyjątek dostosowanych przycisków
Dodaj odwołanie projektu kod zarządzany do wirtualny plik dziennika Microsoft.ExceptionMessageBox.dll.
(Opcjonalnie) Dodaj using (C#) lub Imports (Visual Basic.Za pomocą dyrektywy netto) Microsoft.SqlServer.MessageBox obszaru nazw.
Utworzenie wystąpienie ExceptionMessageBox klasy w jeden z dwóch sposobów:
Ustaw jedną z następujących wartości Buttons:
AbortRetryIgnore-Wyświetla przerwanie, ponownie, i Ignoruj przycisków.
Custom-Wyświetla niestandardowe przyciski.
OK-Wyświetla OK przycisku.
OKCancel-Wyświetla OK i anulowanie przycisków.
RetryCancel-Wyświetla ponownie i anulowanie przycisków.
YesNo-Wyświetla Tak i nr przycisków.
YesNoCancel-Wyświetla Tak, nr, i anulowanie przycisków.
(Opcjonalnie) Jeśli niestandardowe przyciski wywołania jednej z overloads z SetButtonText metoda, aby określić tekst dla maksymalnie pięć niestandardowe przyciski.
Wywołanie Show metoda.Przekazać okno nadrzędne, do której należy dany wyjątek okna komunikatu.
(Opcjonalnie) Zanotuj wartość zwracana DialogResult wyliczania, jeśli trzeba określić, który przycisk użytkownik kliknie.Jeśli niestandardowe przyciski Zanotuj wartość ExceptionMessageBoxDialogResult dla CustomDialogResult właściwość w celu określenia, które niestandardowe przyciski użytkownik kliknie.
Aby umożliwić użytkownikom zdecydować, czy wyświetlać okno komunikatu wyjątek
Dodaj odwołanie projektu kod zarządzany do wirtualny plik dziennika Microsoft.ExceptionMessageBox.dll.
(Opcjonalnie) Dodaj using (C#) lub Imports (Visual Basic.Za pomocą dyrektywy netto) Microsoft.SqlServer.MessageBox obszaru nazw.
Utworzenie wystąpienie ExceptionMessageBox klasy w jeden z dwóch sposobów:
Ustaw ShowCheckbox() Właściwość true.
(Opcjonalnie) Określanie tekstu zadaje użytkownikowi zdecydować, czy wyświetlać okno komunikatu wyjątek ponownie CheckboxText().Tekst domyślny jest "Nie pokazuj tego komunikatu ponownie."
Jeśli trzeba zachować decyzji użytkownika tylko na czas wykonywania aplikacji, zestaw wartość IsCheckboxChecked() z globalnym Boolean zmiennej.Oszacowanie tej wartości przed utworzeniem wystąpienie wyjątku okno komunikatu.
Jeśli zachodzi potrzeba przechowywania trwale decyzji użytkownika, wykonaj następujące czynności:
Wywołanie CreateSubKey(String) metodę otwierania klucz rejestru niestandardowego, używane przez aplikację i zestaw CheckboxRegistryKey() do zwracanych RegistryKey obiektu.
Ustaw CheckboxRegistryValue() do nazwy wartości rejestru, który jest używany.
Set CheckboxRegistryMeansDoNotShowDialog() to true.
Wywołanie Show metoda.Określony klucz rejestru jest oceniany i okno komunikatu wyjątek jest wyświetlany tylko wtedy, gdy dane przechowywane w kluczu rejestru wynosi 0.Jeśli użytkownik zaznaczy pole wyboru przed kliknięciem przycisku, zostanie wyświetlone okno dialogowe danych w kluczu rejestru jest zestaw 1.
Przykład
W tym przykładzie użyto okna komunikatu wyjątek tylko z parametrem OK przycisk, aby wyświetlić informacje z wyjątek aplikacji, który zawiera obsłużył wyjątek wraz z dodatkowymi informacjami dla poszczególnych aplikacji.
try
{
// Do something that may generate an exception.
throw new ApplicationException("An error has occured");
}
catch (ApplicationException ex)
{
// Define a new top-level error message.
string str = "The action failed.";
// Add the new top-level message to the handled exception.
ApplicationException exTop = new ApplicationException(str, ex);
exTop.Source = this.Text;
// Show an exception message box with an OK button (the default).
ExceptionMessageBox box = new ExceptionMessageBox(exTop);
box.Show(this);
}
Try
' Do something that may generate an exception.
Throw New ApplicationException("An error has occured")
Catch ex As ApplicationException
' Define a new top-level error message.
Dim str As String = "The action failed."
' Add the new top-level message to the handled exception.
Dim exTop As ApplicationException = New ApplicationException(str, ex)
exTop.Source = Me.Text
' Show an exception message box with an OK button (the default).
Dim box As ExceptionMessageBox = New ExceptionMessageBox(exTop)
box.Show(Me)
End Try
W tym przykładzie użyto okna komunikatu wyjątek z Tak i nr przyciski, z której użytkownik wybiera.
// Define the message and caption to display.
string str = @"Are you sure you want to delete file 'c:\somefile.txt'?";
string caption = "Confirm File Deletion";
// Show the exception message box with Yes and No buttons.
ExceptionMessageBox box = new ExceptionMessageBox(str,
caption, ExceptionMessageBoxButtons.YesNo,
ExceptionMessageBoxSymbol.Question,
ExceptionMessageBoxDefaultButton.Button2);
if (DialogResult.Yes == box.Show(this))
{
// Delete the file.
}
' Define the message and caption to display.
Dim str As String = "Are you sure you want to delete file 'c:\somefile.txt'?"
Dim caption As String = "Confirm File Deletion"
' Show the exception message box with Yes and No buttons.
Dim box As ExceptionMessageBox = New ExceptionMessageBox(str, _
caption, ExceptionMessageBoxButtons.YesNo, _
ExceptionMessageBoxSymbol.Question, _
ExceptionMessageBoxDefaultButton.Button2)
If Windows.Forms.DialogResult.Yes = box.Show(Me) Then
' Delete the file.
End If
W tym przykładzie użyto wyjątek okno komunikatu z niestandardowych przycisków.
try
{
// Do something that may cause an exception.
throw new ApplicationException("An error has occured");
}
catch (ApplicationException ex)
{
string str = "Action failed. What do you want to do?";
ApplicationException exTop = new ApplicationException(str, ex);
exTop.Source = this.Text;
// Show the exception message box with three custom buttons.
ExceptionMessageBox box = new ExceptionMessageBox(exTop);
// Set the names of the three custom buttons.
box.SetButtonText("Skip", "Retry", "Stop Processing");
// Set the Retry button as the default.
box.DefaultButton = ExceptionMessageBoxDefaultButton.Button2;
box.Symbol = ExceptionMessageBoxSymbol.Question;
box.Buttons = ExceptionMessageBoxButtons.Custom;
box.Show(this);
// Do something, depending on the button that the user clicks.
switch (box.CustomDialogResult)
{
case ExceptionMessageBoxDialogResult.Button1:
// Skip action
break;
case ExceptionMessageBoxDialogResult.Button2:
// Retry action
break;
case ExceptionMessageBoxDialogResult.Button3:
// Stop processing action
break;
}
}
Try
' Do something that may cause an exception.
Throw New ApplicationException("An error has occured")
Catch ex As ApplicationException
Dim str As String = "Action failed. What do you want to do?"
Dim exTop As ApplicationException = New ApplicationException(str, ex)
exTop.Source = Me.Text
' Show the exception message box with three custom buttons.
Dim box As ExceptionMessageBox = New ExceptionMessageBox(exTop)
' Set the names of the three custom buttons.
box.SetButtonText("Skip", "Retry", "Stop Processing")
' Set the Retry button as the default.
box.DefaultButton = ExceptionMessageBoxDefaultButton.Button2
box.Symbol = ExceptionMessageBoxSymbol.Question
box.Buttons = ExceptionMessageBoxButtons.Custom
box.Show(Me)
' Do something, depending on the button that the user clicks.
Select Case box.CustomDialogResult
Case ExceptionMessageBoxDialogResult.Button1
' Skip action
Case ExceptionMessageBoxDialogResult.Button2
' Retry action
Case ExceptionMessageBoxDialogResult.Button3
' Stop processing action
End Select
End Try
W tym przykładzie użyto pola wyboru, aby ustalić, czy wyświetlać okno komunikatu wyjątek.
try
{
// Do something that may cause an exception.
throw new ApplicationException("An error has occured.");
}
catch (ApplicationException ex)
{
string str = "The action failed.";
ApplicationException exTop = new ApplicationException(str, ex);
exTop.Source = this.Text;
// Show a message box if the global variable is true.
if (alwaysShow)
{
ExceptionMessageBox box = new ExceptionMessageBox(exTop);
box.ShowCheckBox = true;
box.IsCheckBoxChecked = true;
box.CheckBoxText = "Always show this message";
box.Show(this);
// Set the global variable.
alwaysShow = box.IsCheckBoxChecked;
}
}
Try
' Do something that may cause an exception.
Throw New ApplicationException("An error has occured.")
Catch ex As ApplicationException
Dim str As String = "The action failed."
Dim exTop As ApplicationException = New ApplicationException(str, ex)
exTop.Source = Me.Text
' Show a message box if the global variable is true.
If alwaysShow Then
Dim box As ExceptionMessageBox = New ExceptionMessageBox(exTop)
box.ShowCheckBox = True
box.IsCheckBoxChecked = True
box.CheckBoxText = "Always show this message"
box.Show(Me)
' Set the global variable.
alwaysShow = box.IsCheckBoxChecked
End If
End Try
W tym przykładzie użyto pola wyboru i klucz rejestru do ustalenia, czy wyświetlać okno komunikatu wyjątek.
try
{
// Do something that could generate an exception.
throw new ApplicationException("An error has occured.");
}
catch (ApplicationException ex)
{
string str = "The action failed. Do you want to continue?";
ApplicationException exTop = new ApplicationException(str, ex);
exTop.Source = this.Text;
// Show a message box with Yes and No buttons
ExceptionMessageBox box = new ExceptionMessageBox(exTop,
ExceptionMessageBoxButtons.YesNo,
ExceptionMessageBoxSymbol.Question,
ExceptionMessageBoxDefaultButton.Button2);
// Enable the check box.
box.ShowCheckBox = true;
// Define the registry key to use.
box.CheckBoxRegistryKey =
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(
@"Software\TestApp");
box.CheckBoxRegistryValue = "DontShowActionFailedMessage";
box.CheckBoxRegistryMeansDoNotShowDialog = true;
box.DefaultDialogResult = DialogResult.Yes;
// The message box won’t be displayed if the
// "DontShowActionFailedMessage" value of the registry key
// contains a non-zero value.
if (box.Show(this) == DialogResult.No)
{
// Do something if the user clicks the No button.
this.Close();
}
}
Try
' Do something that could generate an exception.
Throw New ApplicationException("An error has occured.")
Catch ex As ApplicationException
Dim str As String = "The action failed. Do you want to continue?"
Dim exTop As ApplicationException = New ApplicationException(str, ex)
exTop.Source = Me.Text
' Show a message box with Yes and No buttons
Dim box As ExceptionMessageBox = New ExceptionMessageBox(exTop, _
ExceptionMessageBoxButtons.YesNo, _
ExceptionMessageBoxSymbol.Question, _
ExceptionMessageBoxDefaultButton.Button2)
' Enable the check box.
box.ShowCheckBox = True
' Define the registry key to use.
box.CheckBoxRegistryKey = _
Microsoft.Win32.Registry.CurrentUser.CreateSubKey( _
"Software\TestApp")
box.CheckBoxRegistryValue = "DontShowActionFailedMessage"
box.CheckBoxRegistryMeansDoNotShowDialog = True
box.DefaultDialogResult = Windows.Forms.DialogResult.Yes
' The message box won�t be displayed if the
' "DontShowActionFailedMessage" value of the registry key
' contains a non-zero value.
If box.Show(Me) = Windows.Forms.DialogResult.No Then
' Do something if the user clicks the No button.
Me.Close()
End If
End Try
W tym przykładzie użyto okna komunikatu wyjątek, aby wyświetlić dodatkowe informacje pomocne przy rozwiązywaniu problemów lub debugowania.
try
{
// Do something that you don't expect to generate an exception.
throw new ApplicationException("Failed to connect to the server.");
}
catch (ApplicationException ex)
{
string str = "An unexpected error occurred. Please call Helpdesk.";
ApplicationException exTop = new ApplicationException(str, ex);
exTop.Source = this.Text;
// Information in the Data property of an exception that has a name
// beginning with "HelpLink.Advanced" is shown when the user
// clicks the Advanced Information button of the exception message
// box dialog box.
exTop.Data.Add("AdvancedInformation.FileName", "application.dll");
exTop.Data.Add("AdvancedInformation.FilePosition", "line 355");
exTop.Data.Add("AdvancedInformation.UserContext", "single user mode");
// Show the exception message box with additional information that
// is helpful when a user calls technical support.
ExceptionMessageBox box = new ExceptionMessageBox(exTop);
box.Show(this);
}
Try
' Do something that you don't expect to generate an exception.
Throw New ApplicationException("Failed to connect to the server.")
Catch ex As ApplicationException
Dim str As String = "An unexpected error occurred. Please call Helpdesk."
Dim exTop As ApplicationException = New ApplicationException(str, ex)
exTop.Source = Me.Text
' Information in the Data property of an exception that has a name
' beginning with "HelpLink.Advanced" is shown when the user
' clicks the Advanced Information button of the exception message
' box dialog box.
exTop.Data.Add("AdvancedInformation.FileName", "application.dll")
exTop.Data.Add("AdvancedInformation.FilePosition", "line 355")
exTop.Data.Add("AdvancedInformation.UserContext", "single user mode")
' Show the exception message box with additional information that
' is helpful when a user calls technical support.
Dim box As ExceptionMessageBox = New ExceptionMessageBox(exTop)
box.Show(Me)
End Try