当我在GTK中选择组合数据时如何创建Combobox处理程序激活#

时间:2013-09-23 17:05:41

标签: c# combobox gtk#

我在组合框中有几个项目,还有10个输入字段。组合框中的每个项目都与objct“连接”,当我从组合框中选择第一个项目时,它应该填充来自对象编号1的数据的条目,当我选择第二个项目时,它应该使用来自对象2的数据......

要检查组合框中的哪个项目被选中,请使用:IdFieldComboBox.Active; 但我需要一直打电话,选择改变了。我应该用它做什么?

现在我使用了foucs处理程序,但它不是正确的解决方案:

    protected void OnIdFieldComboBoxFocusChildSet (object o, Gtk.FocusChildSetArgs args)
{

    unitNumber = IdFieldComboBox.Active;


}

1 个答案:

答案 0 :(得分:0)

如果我找到了正确的GTK# ComboBox documentation,则已经为您详细说明了。该示例让您使用GetActiverIter返回True / False是否找到,如果找到,则将值输出到作为out传入的TreeIter对象。

 using System;
 using Gtk;
 class ComboBoxSample
 {
      static void Main ()
      {
           new ComboBoxSample ();
      }
      ComboBoxSample ()
      {
           Application.Init ();
           Window win = new Window ("ComboBoxSample");
           win.DeleteEvent += new DeleteEventHandler (OnWinDelete);
           ComboBox combo = ComboBox.NewText ();
           for (int i = 0; i < 5; i ++)
                combo.AppendText ("item " + i);
           combo.Changed += new EventHandler (OnComboBoxChanged);
           win.Add (combo);
           win.ShowAll ();
           Application.Run ();
      }
      void OnComboBoxChanged (object o, EventArgs args)
      {
           ComboBox combo = o as ComboBox;
           if (o == null)
                return;
           TreeIter iter;
           if (combo.GetActiveIter (out iter))
                Console.WriteLine ((string) combo.Model.GetValue (iter, 0));
      }
      void OnWinDelete (object obj, DeleteEventArgs args)
      {
           Application.Quit ();
      }
 }