C# 带有“是”和“否”按钮的消息框
我正在使用Windows Phone 8,我有一个场景,在该场景中,我正在询问用户,因此用户必须单击是或否 但是meassage框只有OK和Cancel按钮,我不需要它 这是我的密码:C# 带有“是”和“否”按钮的消息框,c#,wpf,silverlight,windows-phone-8,windows-phone,C#,Wpf,Silverlight,Windows Phone 8,Windows Phone,我正在使用Windows Phone 8,我有一个场景,在该场景中,我正在询问用户,因此用户必须单击是或否 但是meassage框只有OK和Cancel按钮,我不需要它 这是我的密码: MessageBoxResult m = MessageBox.Show("Are you sure? This will delete all your data", "Attention!", MessageBoxButton.OKCancel); if (m == MessageBo
MessageBoxResult m = MessageBox.Show("Are you sure? This will delete all your data", "Attention!", MessageBoxButton.OKCancel);
if (m == MessageBoxResult.Cancel)
{
}
else
{
MessageBox.Show("Data Deleted", "Done", MessageBoxButton.OK);
}
如何将其修改为“是”和“否”按钮?我还可以有3个按钮以及自定义文本按钮吗 否,MessageBox是一种密封类型
您需要创建自己的MessageBox控件,该控件具有“是”和“否”按钮。API仅公开确定/取消。您可以使用来自的Coding4Fun消息提示符创建是/否消息:
MessagePrompt msgPrompt = new MessagePrompt();
msgPrompt.Message = "Your Message.";
Button yesBtn = new Button() { Content = "Yes" };
yesBtn.Click += new RoutedEventHandler(yesBtn_Click);
Button noBtn = new Button() { Content = "No" };
noBtn.Click += new RoutedEventHandler(noBtn_Click);
msgPrompt.ActionPopUpButtons.Add(noBtn);
msgPrompt.ActionPopUpButtons.Add(yesBtn);
msgPrompt.Show();
API仅公开“确定”和“取消”。如果您需要使用不同的按钮,恐怕您必须使用自定义消息框
例如
另一个选项是使用XNA框架中的Guide类。有一个BeginShowMessageBox方法,允许您选择为按钮传入任何字符串 点击以下链接
您可以使用此自定义消息框 SLMessageBox.xaml
<controls:ChildWindow x:Class="SLMessageBoxEX.SLMessageBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
Title="SL Custom Message Box"
Width="320"
Height="150">
<controls:ChildWindow.Resources>
<Style x:Key="TextBoxStyle" TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Grid x:Name="RootElement">
<ScrollViewer x:Name="ContentElement"
Background="{TemplateBinding Background}"
BorderThickness="0"
Padding="{TemplateBinding Padding}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</controls:ChildWindow.Resources>
<controls:ChildWindow.Style>
<StaticResource ResourceKey="AlertBoxStyle" />
</controls:ChildWindow.Style>
<Grid x:Name="LayoutRoot" Margin="2">
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox x:Name="txtMsg"
Width="195"
Margin="59,22,0,22"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Background="#02FFFFFF"
BorderBrush="{x:Null}"
Cursor="Arrow"
FontSize="11"
FontWeight="SemiBold"
IsReadOnly="True"
SelectionBackground="#FF727272"
Style="{StaticResource TextBoxStyle}"
Text="SysInformation Healthcare India Pvt Ltd."
TextAlignment="Center"
TextWrapping="Wrap" />
<StackPanel Grid.Row="1"
HorizontalAlignment="Center"
Orientation="Horizontal">
<Button x:Name="btnYes"
Width="65"
Height="23"
Margin="10,0,5,0"
Click="OKButton_Click"
Content="Yes"
Style="{StaticResource ButtonStyle1}" />
<Button x:Name="btnNo"
Width="65"
Height="23"
Margin="5,0,5,0"
Click="btnNo_Click"
Content="No"
Style="{StaticResource ButtonStyle1}" />
<Button x:Name="btnCancel"
Width="65"
Height="23"
Margin="5,0,5,0"
Click="CancelButton_Click"
Content="Cancel"
Style="{StaticResource ButtonStyle1}" />
</StackPanel>
<Image x:Name="imgIcon"
Width="45"
Height="40"
Margin="10,20,0,20"
HorizontalAlignment="Left"
VerticalAlignment="Center">
<Image.Effect>
<DropShadowEffect Color="#FF434343" />
</Image.Effect>
</Image>
</Grid>
}
你可以调用这个消息框
是否按钮
SLMessageBox messBox;
messBox = new SLMessageBox("Message", "Yes or No Message Box...!", SLMessageBox.MessageBoxButtons.YesNo, SLMessageBox.MessageBoxIcon.Information);
messBox.Show();
仅适用于“确定”按钮
SLMessageBox messBox;
messBox = new SLMessageBox("Message", "Ok Message Box...!", SLMessageBox.MessageBoxButtons.Ok, SLMessageBox.MessageBoxIcon.Information);
messBox.Show();
用于“确定”和“取消”按钮
SLMessageBox messBox;
messBox = new SLMessageBox("Message", "Ok and Cancel Message Box...!", SLMessageBox.MessageBoxButtons.OkCancel, SLMessageBox.MessageBoxIcon.Information);
messBox.Show();
编辑:
并检查用户单击的MessageBox的结果
SLMessageBox messBox;
messBox = new SLMessageBox("Message", "Yes, No and Cancel Buttons Message Box...!", SLMessageBox.MessageBoxButtons.YesNoCancel, , SLMessageBox.MessageBoxIcon.Information);
messBox.Show();
messBox.OnMessageBoxClosed += messBox_OnDeleteMessageBoxClosed;
private void messBox_OnDeleteMessageBoxClosed(MessageBoxResult result)
{
if(result==MessageBoxResult.Yes)
{
//....
}
else if(result==MessageBoxResult.No)
{
//....
}
else
{
//...
}
}
好的,你能告诉我如何创建我自己的消息框吗?是的,我会尝试并让你知道。我需要在MessagePrompt中使用哪个程序集?这里有一个勾号按钮以及“是”和“否”按钮,如何删除勾号按钮?我会尝试这个,我还可以有三个按钮吗?是的,它在YesNoCancel按钮中。公共枚举MessageBoxButtons{Ok,YesNon,YesNoCancel,OkCancel}好的,那么它将是SLMessageBox.MessageBoxButtons.YesNoCancel对吗?我还可以修改名称Yes,No和cancel,喜欢自定义名称吗?@Goofy我已经编辑了我的答案。是的,你可以修改按钮名称。
SLMessageBox messBox;
messBox = new SLMessageBox("Message", "Yes, No and Cancel Buttons Message Box...!", SLMessageBox.MessageBoxButtons.YesNoCancel, , SLMessageBox.MessageBoxIcon.Information);
messBox.Show();
messBox.OnMessageBoxClosed += messBox_OnDeleteMessageBoxClosed;
private void messBox_OnDeleteMessageBoxClosed(MessageBoxResult result)
{
if(result==MessageBoxResult.Yes)
{
//....
}
else if(result==MessageBoxResult.No)
{
//....
}
else
{
//...
}
}
if (MessageBox.Show("Are you sure?", "Attention!!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
//this block will be executed when Yes is selected
MessageBox.Show("Data Deleted", "Done", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
//this block will be executed when No is selected
}