等待按钮点击

3

我使用C#语言。 我想创建一个方法,它将执行一些操作并等待用户单击其中四个按钮之一。我希望类似于MessageDialog异步方法,等待用户单击“是”或“否”:

private  async void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    var x = new MessageDialog("Yes or no?", "Choose");

    x.Commands.Add(new UICommand("Yes", (UICommandInvokeHandler) =>
        {
            // blabla
        }));
    x.Commands.Add(new UICommand("No", (UICommandInvokeHandler) =>
        {
            // blabla
        }));

    await x.ShowAsync();
}

问题在于我无法使用这种方法(MessageDialog),因为我想要4个选项,但MessageDialog最多只能提供3个选项。
编辑:
private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    // doing some stuff
    Method();
    // doing some other stuff
}

private void Method()
{
    // makes everything in UI invisible
    // then makes the four buttons that were previously invisible, //visible
    // here I want the program to stop and wait the user to press one of //the four buttons
    // and then make the UI visible and the 4 buttons invisibl
}
1个回答

1

消息对话框 是WinRT框架中的一种对话框。它仅支持3个按钮,以便在较小的屏幕上使用。您没有其他WinRT选项。 但是,您可以创建自己的“类似对话框”的UI控件,但我不建议这样做。 也许您可以将用户的决策分成2个消息对话框。


是的,我也考虑过这个,但这样并不方便... 我会将其他所有UI元素设置为Visibility.Collapsed, 然后在屏幕上放置4个按钮,设置为Visibility.Visible 我想等待用户点击其中一个按钮。 - user2975038
你可以那样做,但那并不是真正的异步操作。我建议让这些按钮简单地针对相同的 EventHandler,它们会“折叠”所有的按钮,并且知道哪个按钮被点击,因为它在 object sender 内部。 - i3arnon
好的,假设我创建了一个名为myEventHandler的事件处理程序并将其添加到我的所有4个按钮: button1.Click += myEventHandler; button2.Click += myEventHandler; button3.Click += myEventHandler; button4.Click += myEventHandler;我不明白这样做如何有助于等待用户单击其中一个4个按钮... 对不起,我还是个初学者,不太确定如何使用它。 - user2975038
好的,现在我明白了,但这并没有真正帮助到我的问题... :/ 也许我没有解释清楚。假设我有:private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) { //做一些事情 Method(); //做一些其他的事情 }private void Method() { //使UI中的所有内容都不可见 //然后使之前不可见的四个按钮变为可见 //在这里,我希望程序停下来等待用户按下其中一个四个按钮 //然后使UI可见,四个按钮不可见 } - user2975038
将这些东西分成两部分。在Method更改UI后,它应该结束,Button_Click之后不应有其他内容。您应该有一个不同的Button_Click2方法,在单击4个按钮时运行,并且它所做的是“//做一些其他事情”。这将完全按照您描述的方式进行,并且非常简单。 - i3arnon
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接