窗口切换 数据传递问题 主窗口点查询按钮 进入另一个窗口。在该窗口中输入要查询的条件,问题是 点确定按钮把查询的结果在主窗的DataGridView中显示 这个要如何实现呢求代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个比较简单的。假设你的主窗口名为frmMain,查询窗品名为frmQuery建议将数据操作类都放在主窗体中。第一步:在输入查询条件的窗口返回一个SQL查语语句就可以。在frmQuery窗口定义一个属性:private string getSQL;public string GetSQL{ set{getSQL = value;} get{return getSQL;}}在frmQuery的确定按钮上写下相关代码private void btnOK_Click(object sender, EventArgs e){ //你所组合得到的查询条件 string sql = "查询条件组合"; getSQL = sql; this.DialogResult = DialogResult.OK;}第二步:在主窗口加载和查询按钮中分别写下如下代码:在主窗体中定义相关数据操作类,假设用的是sql serverprivate SqlConnection conn = null;private SqlDataAdapter da = null;//在窗体加载时初始化相关类private void frmMain_Load(object sender,EventArgs e);{ try { conn = new SqlConnection("你的数据库连接字符串"); } catch(Exception ex) { MessageBox.Show(ex.Message); return; }}//查询按钮private void btnQuery_Click(object sender, EventArgs e){ frmQuery frm = new frmQuery(); if (frm.ShowDialog() == DialogResult.OK) { string sql = frm.GetSQL; da = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); da.Fill(ds); if (ds!=null) this.DataGridView1.DataSource = ds.Tables[0]; }} 方法很多 可以用属性 但是要设置为static也可以在利用构造方法 回复2楼string sql = frm.GetSQL;这句出错 并不包含GetSQL的定义 frmQuery 窗口 里面已经定义过了 为什么frmMain里还是会说没定义呢平时也经常遇到类似情况。 你看下两个窗体是不是在同一个命名空间下,如果不是则需要引用frmQuery的名字空间,或者直接将frmQuery添加到与frmMain同一个工程目录下 你看下两个窗体是不是在同一个命名空间下,如果不是则需要引用frmQuery的名字空间,或者直接将frmQuery添加到与frmMain同一个工程目录下 1、可以利用委托的方式实现2、或者利用自定义一个Event实现 求助:C++ typedef void * HCONN 转成intptr报内存错误 如何设置和获取实体类的主键、表名, 导出excel时,则于时间较长,窗体界面总是花屏一小段时间,如何解决呢? 难道CSDN上真的没有高人?难道CSDN上真的都是菜鸟? 名空间使用问题 再出100分,问一个简单的问题。请您帮助 aspx中脚本文件访问不了asp中iframe对象?(急,救命呀!) 关于DBGRID绑定复选框后,对记录的操作,有点困难?求教!!! 大家帮忙看看,怎么回事? 不小心删除了WMI的 如何恢复 大家好,我想用DataList实现每绑定5个数据项后加条水平线 求提取标签里数据的正则表达式
假设你的主窗口名为frmMain,查询窗品名为frmQuery
建议将数据操作类都放在主窗体中。第一步:在输入查询条件的窗口返回一个SQL查语语句就可以。
在frmQuery窗口定义一个属性:
private string getSQL;
public string GetSQL
{
set{getSQL = value;}
get{return getSQL;}
}在frmQuery的确定按钮上写下相关代码
private void btnOK_Click(object sender, EventArgs e)
{
//你所组合得到的查询条件
string sql = "查询条件组合";
getSQL = sql;
this.DialogResult = DialogResult.OK;
}第二步:在主窗口加载和查询按钮中分别写下如下代码:
在主窗体中定义相关数据操作类,假设用的是sql serverprivate SqlConnection conn = null;
private SqlDataAdapter da = null;//在窗体加载时初始化相关类
private void frmMain_Load(object sender,EventArgs e);
{
try
{
conn = new SqlConnection("你的数据库连接字符串");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}//查询按钮
private void btnQuery_Click(object sender, EventArgs e)
{
frmQuery frm = new frmQuery();
if (frm.ShowDialog() == DialogResult.OK)
{
string sql = frm.GetSQL;
da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds!=null) this.DataGridView1.DataSource = ds.Tables[0];
}
}
也可以在利用构造方法
string sql = frm.GetSQL;这句出错
并不包含GetSQL的定义 frmQuery 窗口 里面已经定义过了 为什么frmMain里还是会说没定义呢
平时也经常遇到类似情况。
2、或者利用自定义一个Event实现