A窗体控制B窗体里面的数据空间显示数据...

evjen 2009-04-20 08:20:44
在窗体b里面有个dataGridView空间
窗体a里面有个按钮,当没有点击按钮的时候 ,b窗体的dataGridView不可见,点击按钮后dataGridView可见 并显示数据...

我没有学C#winform编程 所以请教大家...
谢谢 最好附代码...
...全文
225 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
gahyyai 2009-04-21
  • 打赏
  • 举报
回复
不错
wanglelele 2009-04-20
  • 打赏
  • 举报
回复
可以在b窗体中写一个带参数的构造函数,从a窗体传入参数,来根据参数判断就可以
tang_fu 2009-04-20
  • 打赏
  • 举报
回复
把dataGridView设置为隐藏
在b里面增加一个方法
public void ShowDataGrid()
{
dataGridView.Visible=true;
}

在按钮点击事件处理函数里面
b. ShowDataGrid()
龙宜坡 2009-04-20
  • 打赏
  • 举报
回复
测试通过
evjen 2009-04-20
  • 打赏
  • 举报
回复
谢谢啊 结贴
龙宜坡 2009-04-20
  • 打赏
  • 举报
回复
Form2代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Test
{
public partial class Form2 : Form
{
private DataBindHandler m_DataBind = null;

public Form2(DataBindHandler dataBindHandler)
{
if (dataBindHandler != null)
{
this.m_DataBind = dataBindHandler;
}
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");

dt.Rows.Add("张三", "25");
dt.Rows.Add("李四", "27");

if (m_DataBind != null)
{
m_DataBind(dt);//回调委托的方法!
}
}
}
}
龙宜坡 2009-04-20
  • 打赏
  • 举报
回复
各位 ,委托回调才是王道,来了

Form1中有一个dataGridViewer1

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Test
{
/// <summary>
/// 数据绑定,可以做的更好,想调那个窗体都行
/// </summary>
/// <param name="dt"></param>
public delegate void DataBindHandler(DataTable dt);

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public void DataBind(DataTable dt)
{
this.dataGridView1.Visible = !this.dataGridView1.Visible;

if (this.dataGridView1.Visible)
{
this.dataGridView1.DataSource = dt;
}
}

private void Form1_Load(object sender, EventArgs e)
{
this.dataGridView1.Visible = false;
Form2 frm = new Form2(new DataBindHandler(DataBind));
frm.Show();
}
}
}


Form2中绑定并显示Form1中的控件!
yangqidong 2009-04-20
  • 打赏
  • 举报
回复
class Selectchengji
{
frmInfo fi;
public Selectchengji (frmInfo fi)
{
InitializeComponent();
this.fi=fi;
}
private void btnOK_Click(object sender, EventArgs e)
{
this.Hide();
fi.ShowData();
}
}
明白?
evjen 2009-04-20
  • 打赏
  • 举报
回复
汗。。。那得大改
首先
Selectchengji 增加一个字段frmInfo fi;
然后Selectchengji 构造方法增加一个参数frmInfo fi
方法内部加上一句this.fi=fi;

什么意思啊???
yangqidong 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 evjen 的回复:]
引用 15 楼 yangqidong 的回复:

private void btnOK_Click(object sender, EventArgs e)
        {
            this.Hide();
            frmInfo finfo = new frmInfo();
            finfo.Show(); //把窗体显示出来
            finfo.ShowData();
        }

//顺便问一下,你不会是先打开b再打开a吧???

是的 
我是在b里面show()  a  然后在a里面点击确定 让b里面的dataGridView1显示出来,
[/Quote]

汗。。。那得大改
首先
Selectchengji 增加一个字段frmInfo fi;
然后Selectchengji 构造方法增加一个参数frmInfo fi
方法内部加上一句this.fi=fi;
再后Selectchengji 的btnOK_Click修改成这样
private void btnOK_Click(object sender, EventArgs e)
{
this.Hide();
fi.ShowData();
}
最后frmInfo 的lblChengji_Click改成这样
private void lblChengji_Click(object sender, EventArgs e)
{
Selectchengji schengji = new Selectchengji(this);
schengji.Show();
}
evjen 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yangqidong 的回复:]
private void btnOK_Click(object sender, EventArgs e)
{
this.Hide();
frmInfo finfo = new frmInfo();
finfo.Show(); //把窗体显示出来
finfo.ShowData();
}

//顺便问一下,你不会是先打开b再打开a吧???
[/Quote]
是的
我是在b里面show() a 然后在a里面点击确定 让b里面的dataGridView1显示出来,
heiyandi 2009-04-20
  • 打赏
  • 举报
回复
frmb b = new frmb();
b.Show();
b.ShowData();

混分。。。。
yangqidong 2009-04-20
  • 打赏
  • 举报
回复
private void btnOK_Click(object sender, EventArgs e)
{
this.Hide();
frmInfo finfo = new frmInfo();
finfo.Show(); //把窗体显示出来
finfo.ShowData();
}

//顺便问一下,你不会是先打开b再打开a吧???
panyunlai 2009-04-20
  • 打赏
  • 举报
回复
来学习一下
evjen 2009-04-20
  • 打赏
  • 举报
回复
Selectchengji 就是窗体a
evjen 2009-04-20
  • 打赏
  • 举报
回复
窗体b

private void frmInfo_Load(object sender, EventArgs e)
{
dataGridView1.Visible = false;
label1.Visible = false;
lblContest.Visible = false;
}

private void lblChengji_Click(object sender, EventArgs e)
{
Selectchengji schengji = new Selectchengji();
schengji.Show();
}

public void ShowData()
{
dataGridView1.Visible = true;
label1.Visible = true;
lblContest.Visible = true;

}


窗体a:

private void btnOK_Click(object sender, EventArgs e)
{
this.Hide();
frmInfo finfo = new frmInfo();
finfo.ShowData();
}

代码是这样写的 不行哦...
yangqidong 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 evjen 的回复:]
是的 
那该用什么隐藏啊???
[/Quote]
那就应该没错了
evjen 2009-04-20
  • 打赏
  • 举报
回复
是的
那该用什么隐藏啊???
yangqidong 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 evjen 的回复:]
好像不能显示控件哦
[/Quote]
你是不是用visiable属性隐藏的

evjen 2009-04-20
  • 打赏
  • 举报
回复
好像不能显示控件哦
加载更多回复(7)
Powerbuilder 9.0实用教程》源代码 1.本源代码包括以下章节源代码: 第01章 认识PowerBuilder 9.0、第05章 创建应用程序、第06章 创建窗体、第07章 创建菜单和工具栏、第10章 应用程序的调试和发布、第11章 典型小型实例赏析、第12章 图书管理系统实例和第13章 学生选课系统实例。 2.源代码使用方法参见《附录A 源代码的使用方法》文件。 __________________________________________________________________ 注意: 1.建议读者下载源文件后,将该源文件进行备份,读者使用副本源文件进行学习,这样一但出问题就不用再从网上下载了。 2.将源文件中“数据库文件”文件夹一定要复制到C盘根目录下,这样才能保证您连接数据库文件成功,具体方法参见《附录A 源代码的使用方法》。 对于书中源代码除了数据库外其他都能正常使用,而示例中数据库需要用户在自己的计算机上注册后才能使用,如果不注册数据源就运行应用程序是检索不到任何数据的,下面以连接学生选课系统数据库为例具体介绍如何连接数据库文件。 第1章 认识PowerBuilder 9.0 1 1.1 PowerBuilder 9.0简介 1 1.1.1 中国软件业现状 1 1.1.2 为什么要学习PowerBuilder 9.0 2 1.1.3 PowerBuilder的概述 2 1.1.4 PowerBuilder的特点 3 1.1.5 PowerBuilder 9.0的新特性 6 1.2 安装PowerBuilder 9.0软硬件需求 9 1.2.1 软件环境需求 9 1.2.2 硬件环境需求 9 1.3 PowerBuilder 9.0功能界面介绍 10 1.3.1 PowerBuilder 9.0界面简介 10 1.3.2 常用功能菜单 10 1.4 工作环境设置 16 1.4.1 工具栏的设置 16 1.4.2 窗口排列 19 1.4.3 快捷键设置 20 1.4.4 系统选项设置 21 1.5 用5分钟制作一个简单实例 22 1.5.1 实例运行界面 22 1.5.2 新建一个工作空间对象 22 1.5.3 新建一个应用程序对象 23 1.5.4 创建窗体 23 1.5.5 为应用程序添加open事件代码 25 1.6 小结 27 1.7 习题 27 第2章 编程基础知识 28 2.1 PowerScript脚本语言书写规则 28 2.1.1 忽略大小写 28 2.1.2 语句的断行、续行和分割 28 2.1.3 注释 29 2.2 数据类型 29 2.3 变量和作用域 30 2.3.1 定义变量 30 2.3.2 引用变量 30 2.3.3 变量的作用域 30 2.4 操作符 31 2.5 标识符 32 2.5.1 标识符的构成 32 2.5.2 匈牙利命名法 32 2.6 常用代词 33 2.7 控制语句 34 2.7.1 判断语句 34 2.7.2 循环语句 36 2.8 结构 38 2.8.1 创建结构 38 2.8.2 使用结构 40 2.9 函数 40 2.9.1 Open()和Close()函数 41 2.9.2 MessageBox()函数 41 2.9.3 类型转换函数 41 2.9.4 类型判断函数 42 2.9.5 其他函数 42 2.10 ODBC数据源与专用数据库接口 43 2.10.1 什么是ODBC数据源 43 2.10.2 专用数据库接口 43 2.10.3 连接数据库 44 2.10.4 配置ODBC 48 2.11 SQL语言 49 2.11.1 SQL语言的格式 49 2.11.2 在PowerBuilder 9中使用SQL语句 51 2.12 类和对象的概念 56 2.12.1 继承 57 2.12.2 重载和多态性 57 2.12.3 封装 57 2.12.4 属性、事件和函数 57 2.13 在PowerBuilder 9.0中实现面向对象编程 58 2.13.1 创建对象 58 2.13.2 设置对象属性 59 2.13.3 编写事件代码 59 2.13.4 实现继承对象 60 2.14 用户对象和用户事件 61 2.14.1 用户对象分类 61 2.14.2 定义用户对象 62 2.14.3 使用用户对象 64 2.14.4 用户事件 66 2.15 小结 67 2.16 习题 68 第3章 创建数据库 69 3.1 数

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧