大家好,当我点击datagridview单元格时,我将会加载一个表单,这是我的主要表单。现在我需要的是当我点击打开表格上的保存时,我将关闭此表格。然后我必须自动选择树视图节点。
我尝试写
treeview.focus()
treeview.select ()
但这不适合我。
在我的主窗体上,我将有树视图控件和datagridview控件。
请知道
保存和完成所有工作后,我调用了一个函数,我在main.cs中写了
这是代码
public void loadingDatafrom()
{
treeview.focus();
treeview.select();
}
我的节点如下
ACH
|-> Some.txt
|->Child
|->Child1
|->Child like this i will have and these were create programatically except root node all are created dynamically
答案 0 :(得分:1)
在你启动子窗体的那一行之后的行中(例如:secondForm.ShowDialog();或类似的东西,在这一行之后的行中),添加treeView.Focus和treeview.select语句,以便在返回时在调用表单中,重点是树视图。
答案 1 :(得分:1)
此代码使用selectednode打开树视图(展开)并选择节点
public Form1()
{
InitializeComponent();
FindNode(treeView1.Nodes, ".txt");
this.ActiveControl = treeView1;
}
public void FindNode(TreeNodeCollection nodeCollection, string TextToFind)
{
foreach (TreeNode node in nodeCollection)
{
if (node.Text.Contains(TextToFind))
{
treeView1.SelectedNode = node;
TreeNode parentNode = node.Parent;
while (parentNode != null)
{
parentNode.Expand();
parentNode = parentNode.Parent;
}
break;
}
FindNode(node.Nodes, TextToFind);
}
}
答案 2 :(得分:1)
参考 riffnl 回答
public Form1()
{
InitializeComponent();
FindNode(treeView1.Nodes, ".txt");
this.ActiveControl = treeView1;
}
bool found = false;
public void FindNode(TreeNodeCollection nodeCollection, string TextToFind)
{
foreach (TreeNode node in nodeCollection)
{
if (found)
continue;
if (node.Text.Contains(TextToFind))
{
treeView1.SelectedNode = node;
TreeNode parentNode = node.Parent;
while (parentNode != null)
{
parentNode.Expand();
parentNode = parentNode.Parent;
}
found = true;
break;
}
FindNode(node.Nodes, TextToFind);
}
}
答案 3 :(得分:0)
试试这个
private void Form1_Activated(object sender, EventArgs e)
{
treeView1.Focus();
}
更新:
这将完成你的工作,但我也同意这不是有效的方式
private void Form1_Activated(object sender, EventArgs e)
{
treeView1.ExpandAll();
while (true)
{
if (treeView1.SelectedNode.Text.Contains(".txt"))
{
treeView1.Focus();
return;
}
treeView1.SelectedNode = treeView1.SelectedNode.NextVisibleNode;
}
}
答案 4 :(得分:0)
我假设您尝试在TreeView
中选择特定节点,而您在上面发布的代码段仅将焦点设置为TreeView
控件本身。
为此,您需要将TreeView
控件的SelectedNode
property设置为要显示为所选的单个节点项。指定的节点将自动滚动到视图中,并且展开其所有父节点以使其可见。例如:
myTreeView.SelectedNode = myTreeView.Nodes[0]; //where 0 is the index of the node you want to select
您评论了另一个答案,即您正在尝试查找具有“txt”扩展名的节点,这表明您不一定知道要在{{1}中选择的节点的索引或位置}}。要找到它,您必须遍历TreeView.Nodes
collection中的所有节点并查找匹配项。找到符合条件的节点后,可以将该节点项设置为所选节点:
TreeView
答案 5 :(得分:0)
public void FindNode(TreeNodeCollection nodeCollection)
{
foreach (TreeNode node in nodeCollection)
{
foreach (TreeNode nd in node.ChildNodes)
{
if (nd.Text.Contains(".txt"))
{
nd.Select();
return;
}
}
}
}