none
vb.net winform 如何在B form 控制 A form 的控件 RRS feed

  • 问题

  • 比如说

    我在Bform有一个button

    在A Form 有一个 datagrid view

    我要怎样用Bform的 button 来清除 A form 的 datagridview里的data

    当我尝试 在B form 的 button

    输入 aform.datagridview.rows.clear()

    当我 点击button后 我看了下 A form 的datagridview
    似乎没有什么改变 这是为什么呢 有谁可以说明下~
    2009年3月21日 8:54

答案

全部回复

  • 我遇到的的问题是


    我有2个winform 一个叫salesForm 一个叫receiptForm

    salesForm 有datagridview 已经是有binding source的

    receiptForm有一个button 是要把datagridview的全部内容清除掉的

    我想问的是可否 给receiptForm的 button_click事件 来触发 salesForm的 load事件

    好让我可以用buttonClick的事件的 同时 让salesForm  重新加载更新后的资料

    (需要简短 容易懂的方法 感谢~)
    2009年3月21日 8:08
  • aForm是你在B窗体中重新初始化的,已经不是原来那个A窗体的实例了!
    一般可以这样做,你可以将A窗体的实例(用Me),通过一个B窗体的一个自定义的构造函数的参数,传递给B窗体,然后就可以访问里面的控件了! 

    周雪峰
    2009年3月21日 15:21
    版主
  • 你好!
         我在你的另外一个帖子里回答了这个问题!
         我们在那个帖子里讨论吧! 

    周雪峰
    2009年3月21日 15:23
    版主
  • 这招我用过
    问题是 现在是另一种情况
    我有2个mdi child form 我想在他们之间 让他们close form
    比如说
    a form 有 button
    b form 等  a form 的 button 让 b form 关闭


    可是我要怎样从 a form 知道 我那不是实列 的 b form 呢?

    因为我想得到 那个不是实列的b form 来 关闭 以不重复开同个Form 为目的


     
    2009年3月21日 15:29
  • 我 今天想了半天

    我有个想法那就是 得到现正在开启 form A 如果检测到正在开着Form A ,就把 正在开启的formA 关闭 让后再重开Form A
    这样就不会有2 个 FormA 同时开启了

    问题是怎样得知这些值 ~.~""
     
    2009年3月21日 15:35
  • 你好!
         请问你是不是想每个窗体只显示一个实例?
         如果是这样,只需使用单件模式就可以很幽雅的实现了! 

    周雪峰
    2009年3月21日 15:47
    版主
  • 你是指SDI吗?

    因为我 的最终目的是 在Aform 把 Bform 的 datagridview 重新更新资料
    你刚刚说要从 前一个Form直接把me.xxxxxx 的data 迁移过去对吧?

    那么就没有意义了@@ 因为呢 我尝试过
    在sdi模式下 
    在Aform 用 下列coding

                          formB.StockTableAdapter.Fill(formB.DSDGVPreviewStockInformation.Stock)

    尝试再fill data进入 data set 好让我的datagridview能够从新更新

    但是照你说的 已经不是实列了 所以无法控制了对吗?

    所以我就想用 得到刚刚我说的那个值 来重新开过Bform 这样呢我的Bforn 就会再以Bform_load 的event 来 重新指定 datafill 的动作 这样就可以更新data了@@
    2009年3月21日 15:57
  •  aform 是当前打开的Aform的实例吗?用个全局变量记住
    http://feiyun0112.cnblogs.com/
    • 已标记为答案 xeraee 2009年3月25日 18:34
    2009年3月23日 7:05
    版主
  • 楼主,你好

    我觉得首先你必须在Bform的代码中获得A对象。
    你可以在主窗口申明两个public form变量,用于表示A B两窗口,并在适当的时候实例化并加为主窗口的子窗口(this.AddOwnedForm(Form f))。

    然后你把A中的dataGridView设置为public,然后你在B中通过(this.Owner as MainForm).B.dataGridView来操作。

    Microsoft Online Community Support
    2009年3月24日 6:48
  • 哦 先把 form 成为自己的form先@@?

    很像不错 我去试看看@@
    • 已标记为答案 xeraee 2009年3月25日 18:34
    2009年3月25日 18:33