私は、自分の個人的な楽しみ/拷問のために飛び込んでアプリの怪物を作成することで、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;
}
}
ありがとう!ジェイソン