Подтвердить что ты не робот

Universal Apps MessageBox: "Имя" MessageBox "не существует в текущем контексте"

Я хочу использовать MessageBox для отображения ошибок загрузки в моем приложении WP8.1.

Я добавил:

using System.Windows;

но когда я печатаю:

MessageBox.Show("");

Я получаю ошибку:

"The name 'MessageBox' does not exist in the current context"

В обозревателе объектов я обнаружил, что такой класс должен существовать, а в "Project- > Add reference... → Assemblies- > Framework" показано, что все сборки ссылаются.

Я что-то пропустил? Или есть другой способ показать что-то вроде сообщений?

4b9b3361

Ответ 1

Для Universal Apps новые API требуют, чтобы вы использовали await MessageDialog().ShowAsync() (в Windows.UI.Popups), чтобы привести его в соответствие с Win 8.1.

var dialog = new MessageDialog("Your message here");
await dialog.ShowAsync();

Ответ 2

Просто хотел добавить в ZombieSheep ответ: также, настройка довольно проста

        var dialog = new MessageDialog("Are you sure?");
        dialog.Title = "Really?";
        dialog.Commands.Add(new UICommand { Label = "Ok", Id = 0 });
        dialog.Commands.Add(new UICommand { Label = "Cancel", Id = 1 });
        var res = await dialog.ShowAsync();

        if ((int)res.Id == 0)
        { *** }

Ответ 3

попробуйте следующее:

 using Windows.UI.Popups;

код:

private async void Button_Click(object sender, RoutedEventArgs e)
    {

        MessageDialog msgbox = new MessageDialog("Would you like to greet the world with a \"Hello, world\"?", "My App");

        msgbox.Commands.Clear();
        msgbox.Commands.Add(new UICommand { Label = "Yes", Id = 0 });
        msgbox.Commands.Add(new UICommand { Label = "No", Id = 1});
        msgbox.Commands.Add(new UICommand { Label = "Cancel", Id = 2 });

        var res = await msgbox.ShowAsync(); 

        if ((int)res.Id == 0)
        {
            MessageDialog msgbox2 = new MessageDialog("Hello to you too! :)", "User Response");
            await msgbox2.ShowAsync();
        }

        if ((int)res.Id == 1)
        {
            MessageDialog msgbox2 = new MessageDialog("Oh well, too bad! :(", "User Response");
            await msgbox2.ShowAsync();
        }

        if ((int)res.Id == 2)
        {
            MessageDialog msgbox2 = new MessageDialog("Nevermind then... :|", "User Response");
            await msgbox2.ShowAsync();
        }


    }

Чтобы запустить какую-либо функцию Когда нажаты "Да" или "Нет", вы также можете использовать:

msgbox.Commands.Add(new UICommand("Yes", new UICommandInvokedHandler(this.TriggerThisFunctionForYes)));
msgbox.Commands.Add(new UICommand("No", new UICommandInvokedHandler(this.TriggerThisFunctionForNo)));

Ответ 4

Вы также можете создать класс, похожий на следующий. Ниже приведен пример использования:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Popups;

namespace someApp.ViewModels
{
    public static class Msgbox
    {
        static public async void Show(string mytext)
        {
            var dialog = new MessageDialog(mytext, "Testmessage");
            await dialog.ShowAsync();
        }
    }

}

Пример использования в классе

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace someApp.ViewModels
{
    public class MyClass{

        public void SomeMethod(){
            Msgbox.Show("Test");
        }

    } 
}

Ответ 5

public sealed partial class MainPage : Page {
    public MainPage() {
        this.InitializeComponent();
    }

    public static class Msgbox {
        static public async void Show(string m) {
            var dialog = new MessageDialog( m);            
            await dialog.ShowAsync();
        }
    }

    private void Button_Click(object sender, RoutedEventArgs e) { 
        Msgbox.Show("This is a test to see if the message box work");
        //Content.ToString();
    }
}

Ответ 6

Для новых приложений UWP (начиная с Windows 10) Microsoft рекомендует использовать ContentDialog.

Пример:

private async void MySomeMethod()
{
    ContentDialog dlg = new ContentDialog()
    {
        Title = "My Content Dialog:",
        Content = "Operation completed!",
        CloseButtonText = "Ok"
    };

    await dlg.ShowAsync();
}

Использование:

private void MyButton_Click(object sender, RoutedEventArgs e)
{
   MySomeMethod();
}

Примечание: вы можете использовать разные стили и т.д. Для ContentDialog. Пожалуйста, обратитесь к ссылке выше для различных применений ContentDialog.

Ответ 7

просто используйте:

using System.Windows.Forms;