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

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

Gtk

Дописи

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

05.06.2024 15:52 Gtk

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

Приклад використання віджету ComboBox

ComboBox

Для програмування використовую 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, 350);
        SetPosition(WindowPosition.Center);

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

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

        ListStore store = new ListStore
        (
            typeof(string), 
            typeof(string), 
            typeof(bool), 
            typeof(string)
        );

        store.AppendValues(Stock.DialogWarning, "Warning", true, Stock.Edit);
        store.AppendValues(Stock.Stop, "Stop", false, Stock.Edit);
        store.AppendValues(Stock.New, "New", true, Stock.Edit);
        store.AppendValues(Stock.Clear, "Clear", true, Stock.Edit);
        store.AppendValues(Stock.Edit, "Edit", true, Stock.Edit);

        var imageCell = new CellRendererPixbuf();
        var textCell = new CellRendererText();
        var imageCell2 = new CellRendererPixbuf();

        ComboBox comboBox = new ComboBox(store);
        comboBox.PackStart(imageCell, true);
        comboBox.PackStart(textCell, true);
        comboBox.PackStart(imageCell2, true);

        comboBox.AddAttribute(imageCell, "icon-name", 0);
        comboBox.AddAttribute(textCell, "text", 1);
        comboBox.AddAttribute(imageCell2, "icon-name", 3);

        comboBox.AddAttribute(imageCell, "sensitive", 2);
        comboBox.AddAttribute(textCell, "sensitive", 2);
        comboBox.AddAttribute(imageCell2, "sensitive", 2);

        comboBox.Changed += OnChanged;

        comboBox.Active = 0;

        HBox hBox = new HBox();
        vBox.PackStart(hBox, false, false, 5);
        hBox.PackStart(comboBox, false, false, 5);

        ShowAll();
    }

    void OnChanged(object? o, EventArgs e)
    {
        Console.WriteLine($"Index changed to:{((ComboBox)o!).Active}");
    }
}

Visual Studio Code


© accounting.org.ua - 2024