我將有一個帶有一些節點的treenode。我將在我的表單上有一個datagridview。最初我會將一些數據加載到gridview中。現在,如果我在我的trreview中選擇一個節點,我想將選定的行作爲特定的行。如何使特定的行在基於treeview選擇的datagridview中被選中
假設我的TreeView的是如下
根 | - >兒童 | - > Child1
如果我選擇孩子,我想作一個相應的行作爲選擇,如果child1另一行應該得到選擇。
任何想法請
我將有一個帶有一些節點的treenode。我將在我的表單上有一個datagridview。最初我會將一些數據加載到gridview中。現在,如果我在我的trreview中選擇一個節點,我想將選定的行作爲特定的行。如何使特定的行在基於treeview選擇的datagridview中被選中
假設我的TreeView的是如下
根 | - >兒童 | - > Child1
如果我選擇孩子,我想作一個相應的行作爲選擇,如果child1另一行應該得到選擇。
任何想法請
1)您需要的節點映射到對應的DataGrid行
this.dataGridView1.Rows[0].Tag = id; // a node id
2)處理節點click事件,並通過ID找到相應的行,然後選擇它
if (tvwACH.SelectedNode.Parent != null)
{
int id = (int)tvwACH.SelectedNode.Tag ; // make sure you've already assigned tag when creating Three nodes and data rows
foreach(DataGridViewRow row in this.dataGridView1.Rows)
{
int rowId = (int)row.Tag ;
if(rowId == id)
{
row.Selected = ture;
}
else
{
row.Selected = false; //discard other rows
}
}
}
這是代碼ih AVE書面
private void tvwACH_AfterSelect(object sender, TreeViewEventArgs e)
{
string node = string.Empty;
if (tvwACH.SelectedNode.Parent != null)
{
node = tvwACH.SelectedNode.Text.ToString();
if (node == "FileHeader")
{
int tag = Convert.ToInt16(tvwACH.SelectedNode.Tag.ToString());
this.dataGridView1.Rows[0].Tag = tag;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
int rowId = (int)row.Tag;
if (rowId == tag)
{
row.Selected = true;
}
}
}
string strSwitch = tvwACH.SelectedNode.Parent.Text;
switch (strSwitch)
{
case "ACH":
{
dataGridView1.Visible = true;
dataGridView1.Rows.Clear();
node = tvwACH.SelectedNode.Text;
StreamReader sr = new StreamReader(node);
while (sr.Peek() >= 0)
{
string line = sr.ReadLine();
dataGridView1.Rows.Add(rectype[line.Substring(0, 1)].ToString(), line);
}
sr.Close();
}
break;
}
}
}
this.dataGridView1.Rows [X] .Tag =標籤; //其中x是當前行,您可以將它添加到datagrid的新行並將當前(選定)節點的id – Arseny 2010-09-09 11:53:31
試試這個:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int flage = 1;
private void button1_Click(object sender, EventArgs e)
{
flage = 1;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Selected)
{
DataGridViewRow currentRow = dataGridView1.SelectedRows[0];
TreeNode node1 = new TreeNode(currentRow.Cells[1].Value.ToString());
TreeNode node2 = new TreeNode(currentRow.Cells[2].Value.ToString());
TreeNode node3 = new TreeNode(currentRow.Cells[3].Value.ToString());
TreeNode[] TreeArray = new TreeNode[] { node1,node2, node3 };
TreeNode finalnode = new TreeNode(currentRow.Cells[0].Value.ToString(), TreeArray);
treeView1.Nodes.Add(finalnode);
flage = 1;
break;
}
else
{
flage = 0;
}
}
if(flage==0)
{
MessageBox.Show("Row is not Selected Please select the row");
}
}
private void button2_Click(object sender, EventArgs e)
{
treeView1.Nodes.Remove(treeView1.SelectedNode);
}
int flage2;
private void button3_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Selected)
{
dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
flage2 = 1;
break;
}
else
{
flage2 = 0;
}
}
if (flage2 == 0)
{
MessageBox.Show("Row is not selected Please select the row");
}
}
}
row.tag和row.selected這些都沒有得到 – Dotnet 2010-09-09 09:49:17
固定 「的DataGridViewRow」 行 – Arseny 2010-09-09 10:00:27
INT ID = tvwACH.SelectedNode.Tag這引起了我的錯誤爲\t不能將類型'object'隱式轉換爲'int'。 – Dotnet 2010-09-09 10:06:05