读书人

TreeView查找选中的有关问题,求高手帮

发布时间: 2013-03-27 11:22:42 作者: rapoo

TreeView查找选中的问题,求高手帮忙.
以下测试代码,button1_Click实现查找定位节点的功能,并自动展开树到目标节点,但目标节点没有选中!
当把button1_Click事件的3行代码移到Form1_Load事件的结尾,则目标节点是选中状态的!
请问要使button1_Click查找后能选中节点,应如何改写? 谢谢!


private void Form1_Load(object sender, EventArgs e)
{
// 建测试树
TreeNode node0 = new TreeNode();
node0.Text = "000";

TreeNode node11 = new TreeNode();
node11.Text = "aaa";
node0.Nodes.Add(node11);

TreeNode node111 = new TreeNode();
node111.Text = "111";
node11.Nodes.Add(node111);

TreeNode node112 = new TreeNode();
node112.Text = "112";
node11.Nodes.Add(node112);

TreeNode node22 = new TreeNode();
node22.Text = "bbb";
node0.Nodes.Add(node22);

TreeNode node221 = new TreeNode();
node221.Text = "221";
node22.Nodes.Add(node221);

TreeNode node222 = new TreeNode();
node222.Text = "222";
node22.Nodes.Add(node222);

TreeNode node223 = new TreeNode();
node223.Text = "223";
node22.Nodes.Add(node223);

TreeNode node2231 = new TreeNode();
node2231.Text = "cxcai";
node223.Nodes.Add(node2231);

TreeNode node33 = new TreeNode();
node33.Text = "ccc";
node0.Nodes.Add(node33);

treeView1.Nodes.Add(node0);
}


// 节点查找函数
private TreeNode FindNode(TreeNode tnParent, string strValue, string strType)
{
if (tnParent == null)
{ return null; }

if (tnParent.Text.IndexOf(strValue) > -1)
{ return tnParent; }

TreeNode tnRet = null;
foreach (TreeNode tn in tnParent.Nodes)
{
tnRet = FindNode(tn, strValue, strType);
if (tnRet != null)
{ break; }
}
return tnRet;
}

private void button1_Click(object sender, EventArgs e)
{
TreeNode nodexxx = new TreeNode();
nodexxx = FindNode(treeView1.Nodes[0], "112", "");

treeView1.SelectedNode = nodexxx;
}


[解决办法]
private void button1_Click(object sender, EventArgs e)
{
TreeNode nodexxx = new TreeNode();
nodexxx = FindNode(treeView1.Nodes[0], "112", "");

treeView1.SelectedNode = nodexxx;
treeView1.Focus();
}
[解决办法]
对头,你点击的时候实际是按钮获得了焦点,所以需要treeView.Focus()

读书人网 >C#

热点推荐