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()