我正在学习 C#/Gtk#,通过加入并为我自己的个人享受/折磨而创建一个应用程序的怪物。我最近的困惑是如何从 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;
}
}
谢谢!杰森