gpt4 book ai didi

c# - 如何设置 Gtk.ComboBox 的值?

转载 作者:行者123 更新时间:2023-11-30 14:43:40 25 4
gpt4 key购买 nike

我所能想到的就是与 ComboBox.GetEnumerator 或类似的东西有关。

我想做这样的事情:

System.Collections.IEnumerator e = this.task_difficulty_combobox.GetEnumerator();
while (e.MoveNext())
{
if (e.ToString() == this.task.Difficulty.ToString())
{
Gtk.TreeIter i = (Gtk.TreeIter)e.Current;
this.task_difficulty_combobox.SetActiveIter(i);
break;
}
}

但是,这不起作用。

最佳答案

您的代码不起作用的原因是“组合框中的项目”实际上是打包到其中用于显示数据列的单元格渲染器。要获取实际数据,您需要 TreeModel 对象。

如果您真的必须仅根据组合中的内容进行选择,请按照以下方法进行选择:

string[] values = new string[]{"one", "two", "three"};
var combo = new ComboBox(values);

Gtk.TreeIter iter;
combo.Model.GetIterFirst (out iter);
do {
GLib.Value thisRow = new GLib.Value ();
combo.Model.GetValue (iter, 0, ref thisRow);
if ((thisRow.Val as string).Equals("two")) {
combo.SetActiveIter (iter);
break;
}
} while (combo.Model.IterNext (ref iter));

但是,通常将您的值编入索引会更简洁,如下所示:

List<string> values = new List<string>(){"one", "two", "three"};  
var combo = new ComboBox(values.ToArray());

// Select "two"
int row = values.IndexOf("two");
Gtk.TreeIter iter;
combo.Model.IterNthChild (out iter, row);
combo.SetActiveIter (iter);

关于c# - 如何设置 Gtk.ComboBox 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1651535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com