C#ComboBox SelectedItem.toString()没有返回预期的结果

时间:2015-05-17 15:13:26

标签: c# combobox treeview

我有一个允许用户将玩家添加到名单中的表单,输入玩家名称并从组合框中选择玩家所属的分区。

当要将播放器添加到我的TreeView控件时,应显示所选分区的节点将显示此文本:System.Data.DataRowView

我在这里通过MSDN获得了实现此代码的代码:

这是表单加载函数中的代码,用于填充组合框:

    private void btn_add_Click(object sender, EventArgs e)
    {
        object selItem = cmbo_divisions.SelectedItem;
        AddPlayerToTreeView(txt_player_name.Text, selItem.ToString());
    }

这里我调用函数将播放器添加到TreeView:

        private void AddPlayerToTreeView(string playerName, string division)
    {
        TreeNode[] tns = this.tview_roster.Nodes.Find(division, false); //try to find the division, if exists
        TreeNode tn = new TreeNode();

        if (tns.Length > 0) //division exists - add player
        {
            tn = this.tview_roster.Nodes[tns[0].Index].Nodes.Add(playerName, playerName);
            tn.ImageIndex = 0; //player icon
        }
        else //division doesn't exist - add division, then add player
        {
            tn = this.tview_roster.Nodes.Add(division, division);
            tn.ImageIndex = 1; //division icon
            AddPlayerToTreeView(playerName, division);
        }
    }

这是添加播放器的功能:

{{1}}

结果如下: cmbobox issue

我不确定为什么它不会起作用..而且我很茫然。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

嗯,好吧......也许就像下面这样。

访问组合数据源(DataTable),并使用所选索引提取选定的行和列值。也许添加一些错误处理。

private void btn_add_Click(object sender, EventArgs e)
{
    var data = cmbo_divisions.DataSource as DataTable;
    var row = data.Rows[cmbo_divisions.SelectedIndex];
    var selected = row["title"].ToString();
    AddPlayerToTreeView(txt_player_name.Text, selected);
}

答案 1 :(得分:0)

尝试:

private void btn_add_Click(object sender, EventArgs e)
{
    AddPlayerToTreeView(txt_player_name.Text, cmbo_divisions.Items[cmbo_divisions.SelectedIndex].Text);
}

编辑:更新为更好的方式

答案 2 :(得分:0)

试试这个:

private void btn_add_Click(object sender, EventArgs e)
{
    object selItem = cmbo_divisions.SelectedItem;
    AddPlayerToTreeView(txt_player_name.Text, cmbo_divisions.SelectedItem as string);
}

ToString()将获取类型名称,但在这种情况下,SelectedItem是一个字符串。