大家好!请教如下问题:
表结构如下: 表名;Kaizhi
ID 字段 Field Name
1 开支ID kzID
2 开支人 Kzren
3 开支项目名 kzname
---
我在Form1的TreeView下读取了“ 字段 ”,我在实现如下的功能时出现了问题:即
当我点击TreeView下的“开支ID”时,能够在Form2中显示如下信息:
ID 字段 Field Name
1 开支ID kzID
当我点击TreeView下的“开支人”时,能够在Form2中显示如下信息:
ID 字段 Field Name
2 开支人 Kzren
如何实现啊?我实在是搞不定!请高手多多指点啊!最好能提供一些可以参考的源码.
表结构如下: 表名;Kaizhi
ID 字段 Field Name
1 开支ID kzID
2 开支人 Kzren
3 开支项目名 kzname
---
我在Form1的TreeView下读取了“ 字段 ”,我在实现如下的功能时出现了问题:即
当我点击TreeView下的“开支ID”时,能够在Form2中显示如下信息:
ID 字段 Field Name
1 开支ID kzID
当我点击TreeView下的“开支人”时,能够在Form2中显示如下信息:
ID 字段 Field Name
2 开支人 Kzren
如何实现啊?我实在是搞不定!请高手多多指点啊!最好能提供一些可以参考的源码.
把要显示的数据,传给Form2显示就可以了啊最简单的就是Form2里面放6个Label,上面三个是固定内容ID 字段 Field Name
下面三个需要动态改变。把下面三个的Modifier属性设置为public然后在Form1里面Form2 frm = new Form2();
frm.label4.Text = 选中节点第0列值
frm.label5.Text = 选中节点第1列值
frm.label6.Text = 选中节点第3列值
frm.ShowDialog(this);
To:devilli!谢谢你的建议!能否再说的具体点啊!
我的代码是在Form1的
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
“事件”
}
在Form2中以 与原来数据库 一样的表格 显示出来。
只是让它显示出来的是 被选如( 开支ID) 的那一行信息。
Form1using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string id = ""; public string Id
{
get { return id; }
set { id = value; }
}
private string 字段 = ""; public string 字段1
{
get { return 字段; }
set { 字段 = value; }
}
private string filedName = ""; public string FiledName
{
get { return filedName; }
set { filedName = value; }
} private void button1_Click(object sender, EventArgs e)
{
string connstr = "user id=manager;password=foton;data source=ecudb";
using (System.Data.OracleClient.OracleConnection conn = new System.Data.OracleClient.OracleConnection(connstr))
{
DataSet ds = new DataSet();
string selectSql = "select id,字段,fieldname from kaizhi";
System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand(selectSql, conn);
System.Data.OracleClient.OracleDataAdapter da = new System.Data.OracleClient.OracleDataAdapter(cmd);
int rtnNum = 0;
rtnNum = da.Fill(ds, "table");
TreeNode root = new TreeNode();
root.Name = "根";
root.Text = "根节点";
if (!this.treeView1.Nodes.ContainsKey(root.Name))
{
this.treeView1.Nodes.Add(root);
}
for (int i = 0; i < rtnNum; i++)
{
TreeNode treeNode = new TreeNode();
treeNode.Name = ds.Tables["table"].Rows[i]["id"].ToString();
treeNode.Text = ds.Tables["table"].Rows[i]["字段"].ToString();
treeNode.Tag = (object)ds.Tables["table"].Rows[i]["fieldname"].ToString();
root.Nodes.Add(treeNode);
}
treeView1.ExpandAll();
} } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
this.Id = treeView1.SelectedNode.Name;
this.字段1 = treeView1.SelectedNode.Text;
this.FiledName = treeView1.SelectedNode.Tag.ToString();
Form2 frm2 = new Form2();
frm2.Id = this.Id;
frm2.字段1 = this.字段1;
frm2.FieldName=this.FiledName;
frm2.Show();
}
}
}Form2
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private string id = ""; public string Id
{
get { return id; }
set { id = value; }
}
private string 字段 = ""; public string 字段1
{
get { return 字段; }
set { 字段 = value; }
}
private string fieldName = ""; public string FieldName
{
get { return fieldName; }
set { fieldName = value; }
} private void Form2_Load(object sender, EventArgs e)
{
this.textBox1.Text = this.Id;
this.textBox2.Text = this.字段1;
this.textBox3.Text=this.FieldName;
}
}
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
this.Id = treeView1.SelectedNode.Name;
this.字段1 = treeView1.SelectedNode.Text;
this.FiledName = treeView1.SelectedNode.Tag.ToString();
Form2 frm2 = new Form2();
frm2.Id = this.Id;
frm2.字段1 = this.字段1;
frm2.FieldName=this.FiledName;
frm2.Show();
}
同意楼上这个方法,不过好像每点一次就会弹出一个窗口,这样不是楼主要的
应该在 去掉这个
Form2 frm2 = new Form2();
frm2.Show();
让这个frm2在form1一加载的时候就加载进来
要只要一个Form2的话,就如你所说的在Form1窗体load的时候new一个Form2.