Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有“是”和“否”按钮的消息框_C#_Wpf_Silverlight_Windows Phone 8_Windows Phone - Fatal编程技术网

C# 带有“是”和“否”按钮的消息框

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

我正在使用Windows Phone 8,我有一个场景,在该场景中,我正在询问用户,因此用户必须单击是或否

但是meassage框只有OK和Cancel按钮,我不需要它

这是我的密码:

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
            }