Как установить строку заголовка окна в gtk#

#c# #gtk3 #gtk#

Вопрос:

У меня проблема, я хочу использовать строку заголовка в качестве заголовка в gtk#, но вот ошибка, которая была создана:

ошибка CS1061: «Окно» не содержит определения для «gtk_window_set_titlebar», и не удалось найти доступный метод расширения «gtk_window_set_titlebar», принимающий первый аргумент типа «Окно» (отсутствует директива using или ссылка на сборку?)

Это gtk#, который я использовал: GTK#

И вот мой код:

 namespace gtkapp
{
    class MainWindow : Window
    {
        private int _counter = 0;
        static private int _max = 1000;


        [UI] private Label _label1 = null;
        [UI] private Label _label2 = null;
        [UI] private Button _button1 = null;
        [UI] private Button _button2 = null;
        [UI] private LevelBar lb = new LevelBar(0, _max);
        [UI] private HeaderBar _headerbar = null;
        [UI] private Window MainWindoww = null;

        public MainWindow() : this(new Builder("MainWindow.glade")) { }

        private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow"))
        {
            builder.Autoconnect(this);
            MainWindoww.gtk_window_set_titlebar(MainWindoww, _headerbar);
            DeleteEvent  = Window_DeleteEvent;
            _button1.Clicked  = Button1_Clicked;
            _button2.Clicked  = Button2_Clicked;

            _headerbar.Title = "GTK clicker";

            Decorated = false;

            lb.Value = 0;
            lb.MaxValue = 1000000;
        }

        private void Window_DeleteEvent(object sender, DeleteEventArgs a)
        {
            Application.Quit();
        }

        private void Button1_Clicked(object sender, EventArgs a)
        {
            _counter  ;
            // _counter  = 100;
            lb.Value  = 10;
            lb.MaxValue  = 1;
            if(lb.Value < _max)
            {
                _label1.Text = "This GTK button has been clicked "   _counter   " time(s).";
            }
            else if(lb.Value >= _max)
            {
                _label1.Text = "This GTK button has been clicked for the "   _counter   " time(s).";
            }
        }

        private void Button2_Clicked(object sender, EventArgs a)
        {
            Application.Quit();
        }
    }
}
 

Что-то эквивалентное gtk_window_set_titlebar()

Комментарии:

1. Разве у вашего окна нет Titlebar свойства или SetTitlebar() метода? Попробуй this.Titlebar = _headerbar; или this.SetTitlebar(_headerbar);

2. спасибо за вашу помощь

Ответ №1:

Решение, которое я нашел в комментарии.

use this.Titlebar = (the variable of the header bar, my variable name is _headerbar); Decotated = false;

Заказ должен быть выше, иначе это не сработает