I'd like to implement a search function that appears when we press ctrl+F.
So when I press Ctrl+F, I can make another Form and send value.
But SearchNode method is not working with this error NullReferenceException.
How can I make search function that works in treeview?
Form1.cs
public TreeView TreeView1 { get; set; }
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.F))
{
Search search = new Search();
search.ChildFormEvent += EventMethod;
search.ShowDialog();
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
public void EventMethod(string str)
{
textBox1.Text = str.ToString();
}
Form2.cs
public delegate void ChildFormSnedDataHandler(string message);
public event ChildFormSnedDataHandler ChildFormEvent;
public void btnSearch_Click(object sender, EventArgs e)
{
string str = string.Empty;
str = txtSearch.Text;
this.ChildFormEvent(str);
this.Close();
Form1 form1 = new Form1();
try
{
TreeNode SelectedNode = SearchNode(str, form1.TreeView1.Nodes[0]);
if (SelectedNode != null)
{
form1.TreeView1.SelectedNode = SelectedNode;
form1.TreeView1.SelectedNode.Expand();
form1.TreeView1.Select();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private TreeNode SearchNode(string SearchText, TreeNode StartNode)
{
TreeNode node = null;
while (StartNode != null)
{
if (StartNode.Text.ToLower().Contains(SearchText.ToLower()))
{
node = StartNode;
break;
}
if (StartNode.Nodes.Count != 0)
{
node = SearchNode(SearchText, StartNode.Nodes[0]);
if (node != null)
break;
}
StartNode = StartNode.NextNode;
}
return node;
}