Програми для обліку

Українське програмне забезпечення з відкритим кодом

Gtk

Дописи

Програмування / Gtk

05.06.2024 13:01 Gtk

Приклад програми на C# з використанням GtkSharp | Стандартні діалогові вікна GTK

Приклад виведення інформаційного повідомлення також повідомлення про помилку та повідомлення із запитом

Приклад виведення інформаційного повідомлення також повідомлення про помилку та повідомлення із запитом

Для програмування використовую Visual Studio Code.
Лінки на програми внизу допису.

В програмі Visual Studio Code створюємо новий проект
dotnet new console

Додаємо до проекту пакет GtkSharp
dotnet add package GtkSharp

Запуск програми
dotnet run

Program.cs
using Gtk;

class Program
{
    public static void Main()
    {
        Application.Init();
        new FirstWindow();
        Application.Run();
    }

    public static void Quit()
    {
        Application.Quit();
    }
}
FirstWindow.cs
using Gtk;

class FirstWindow : Window
{
    public FirstWindow() : base("Test")
    {
        SetDefaultSize(600, 600);
        SetPosition(WindowPosition.Center);

        DeleteEvent += delegate { Program.Quit(); };

        VBox vBox = new VBox();
        Add(vBox);

        AddButton(vBox, "Діалогове інформаційне повідомлення", OnOpenInfo);
        AddButton(vBox, "Діалогове повідомлення про помилку", OnOpenError);
        AddButton(vBox, "Діалогове повідомлення підтвердження", OnOpenRequest);

        ShowAll();
    }

    void AddButton(VBox vBox, string caption, EventHandler eventHandler)
    {
        HBox hBox = new HBox();
        vBox.PackStart(hBox, false, false, 5);

        Button button = new Button(caption);
        button.Clicked += eventHandler;
        hBox.PackStart(button, false, false, 5);
    }

    void OnOpenInfo(object? sender, EventArgs args)
    {
        Message.Info(this, "Текст повідомлення");
    }

    void OnOpenError(object? sender, EventArgs args)
    {
        Message.Error(this, "Текст повідомлення");
    }

    void OnOpenRequest(object? sender, EventArgs args)
    {
        if (Message.Request(this, "Текст повідомлення") == ResponseType.Yes)
        {

        }
    }
}
Message.cs
using Gtk;

class Message
{
    public static void Info(Window? pwin, string message)
    {
        MessageDialog md = new MessageDialog(pwin, DialogFlags.DestroyWithParent, MessageType.Info, ButtonsType.Ok, message) { WindowPosition = WindowPosition.Center };
        md.Run();
        md.Dispose();
        md.Destroy();
    }

    public static void Error(Window? pwin, string message)
    {
        MessageDialog md = new MessageDialog(pwin, DialogFlags.DestroyWithParent, MessageType.Warning, ButtonsType.Close, message) { WindowPosition = WindowPosition.Center };
        md.Run();
        md.Dispose();
        md.Destroy();
    }

    public static ResponseType Request(Window? pwin, string message)
    {
        MessageDialog md = new MessageDialog(pwin, DialogFlags.DestroyWithParent, MessageType.Question, ButtonsType.YesNo, message);
        ResponseType response = (ResponseType)md.Run();
        md.Dispose();
        md.Destroy();

        return response;
    }
}

Visual Studio Code


© accounting.org.ua - 2024