RESOLVED: Added an 'else' to the AfterCheck so it simply calls getChildNodesToGrid() I then updated private DataTable getFieldsTable() to add a counter and condition 'if (fileNode.Nodes[cnt].Checked)'. Don't know if this is proper programming but seems to work.
private void tvFileMan_AfterCheck(object sender, TreeViewEventArgs e)
{
getFileAndColumns();
if (e.Node.Nodes.Count > 0)
{
//this.CheckAllChildNodes(e.Node, e.Node.Checked);
// Checked a file so get fields and check all fields except subfiles.
e.Node.Expand();
foreach (TreeNode tn in e.Node.Nodes)
{
if (tn.Nodes.Count.Equals(0))
tn.Checked = e.Node.Checked;
}
getChildNodesToGrid();
}
else
{
e.Node.Expand();
//if (tn.Nodes.Count.Equals(0))
if (e.Node.Checked)
{
//tn.Checked = e.Node.Checked;
getChildNodesToGrid();
}
}
private DataTable getFieldsTable()
{
//original
DataTable dt = new DataTable();
dt.Columns.Add("ColumnName");
dt.Columns.Add("FMFieldName");
dt.Columns.Add("FMFieldNumber");
dt.Columns.Add("FMFileNumber");
dt.Columns.Add("FMFieldType");
dt.Columns.Add("ResolvedValue");
dt.Columns.Add("PointsToFileNumber");
TreeNode fileNode = tvFileMan.SelectedNode;
int cnt = 0;
foreach (TreeNode tn in fileNode.Nodes)
{
if (tn.Nodes.Count == 0)
{
if (fileNode.Nodes[cnt].Checked)
{
DataRow dr = dt.NewRow();
dr\["FMFieldName"\] = tn.Text.Substring(tn.Text.IndexOf(" - ") + 4);
dr\["FMFieldNumber"\] = tn.Tag.ToString();
dr\["FMFileNumber"\] = tn.Parent.Tag.ToString();
dr\["ColumnName"\] = suggestName(tn.Text.Substring(tn.Text.IndexOf(" - ") + 4));
//added by TEA 9/3/14 to get PointsToFileNumber in DataGrid
if (dr\["PointsToFileNumber"\].ToString().Length > 0)
{
dr\["ColumnName"\] = suggestName(tn.Text.Substring(tn.Text.IndexOf(" - ") + 4) + "txt");
}
dt.Rows.Add(dr);
}
cnt++;
}
}