Я изучаю C#/Gtk #, прыгая и создавая чудовищность приложения для моего личного удовольствия/пыток. Мое последнее затруднение заключается в том, как очистить элементы от ComboBoxEntry. Я нашел способ сделать это, но для меня это похоже.Gtk # - Правильный способ очистки ActiveText на ComboBoxEntry?
Вот мой тест приложение, я создаю ComboBoxEntry с текстом, а затем нажмите кнопку, чтобы очистить его:
Затем, когда я нажимаю кнопку, чтобы очистить его, элементы будут удалены, но «Foo "по-прежнему остается в активном тексте:
Во всяком случае, я понял, способ, чтобы очистить его с помощью следующего кода. Кажется, что там должен быть лучший способ сделать это, но я не могу найти один, так что я иду сюда для проверки вменяемости:
using System;
using Gtk;
public partial class MainWindow: Gtk.Window
{
ListStore comboModel1 = new ListStore (typeof(string));
public MainWindow(): base (Gtk.WindowType.Toplevel)
{
Build();
ComboBoxEntry1.Model = comboModel1;
comboModel1.AppendValues ("foo");
// Set "foo" as selected item
Gtk.TreeIter iter;
ComboBoxEntry1.Model.IterNthChild (out iter, 0);
ComboBoxEntry1.SetActiveIter (iter);
}
protected void Button1OnClicked (object sender, System.EventArgs e)
{
// Just doing this .Clear() still leaves "foo" as the ActiveText
comboModel1.Clear();
// My kludge to clear ActiveText
comboModel1.AppendValues ("");
Gtk.TreeIter iter;
ComboBoxEntry1.Model.IterNthChild (out iter, 0);
ComboBoxEntry1.SetActiveIter (iter);
comboModel1.Clear();
}
protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
Application.Quit();
a.RetVal = true;
}
}
Спасибо! Jason
Sry, вы говорите о ComboboxEntry. Я могу подтвердить такое же поведение. Настолько жаль, что я путаю. – Chris