用户操作
[即时聊天] [发私信] [加为好友]
spklID:spkl1
29073次访问,排名4066好友17人,关注者15
今生只爱一个人
spkl1的文章
原创 141 篇
翻译 0 篇
转载 52 篇
评论 55 篇
spkl的公告


站内搜索
广告位
广告位招商
访问统计
联系方式
我的网摘
最近评论
wsxggjj:MHGFTREDFGH
wsxggjj:WOUYTGHGF
wsgjj:hgfdsas
angel_heart_cn:good!!!
sunwenzhu1:很好,数据库设计很好
文章分类
收藏
    相册
    this
    琐碎
    我->李洪杰
    博客
    开源
    51aspx
    Pudn
    素材
    Tucoo
    音乐
    NowOk
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 C# 线程/窗体 间传参实现控制/刷新 窗体控件收藏

    新一篇: API注册热键 | 旧一篇: 男孩子变坏的原因

    这里只介绍方法,相关具体东西网上自己找下 

    1.窗体构造:  关于线程/窗体传参,比较简单的就是窗体构造,通过窗体构造,来向窗体传递窗体控件,我们以

    Form1.DataGridView为例,实现效果为Form2执行刷新Form1.DataGridView的功能:

    首先构造Form2的窗体函数,参数为DataGridView类型(当然你也可以传Form1的整个窗体,来实现更多的操作),这样

    就可以将Form1.DataGridView为参数传递给Form2的刷新函数.

     

    2.静态: 这里说的静态既有静态变量又有静态函数,首先我们从比较简单也比较投机的方法来介绍:

               A:窗体激活事件+静态变量:  首先在[无关类]中声明一个静态变量,例如: public  static bool  WYH=false;

                   此时Form2如果要刷新Form1.DataGridView,那么在Form2的中``将WYH重新赋值,如:类名.WYH=true;

                   在Form1的Active事件中判断WYH的值``如果WYH==true;则执行Form1.DataGridView的刷新函数.

             B:任意类刷新函数+静态: 在任意类中写刷新函数,Form1.DataGridView赋值给静态变量 public static

                datagridview  DGV,Form2中以DGV为参传递给类得刷新函数.

              C:静态方法:自己写个刷新得静态方法就得了,Form2直接调用之.需要注意得是线程从属关系.

     

    3.委托:很多初学者对这个东西都很忌讳,觉得有多么高深似得,其实很简单,使用一个委托就三步:声明,实例,调用

    跟使用其他变量没有什么区别,一般委托经常跟线程和事件一起出没,要了解更多相关内容请在CSDN或者GOOGLE

    上搜索一下,太多了``我就不作无谓得说明了.

    需要注意得就是委托得直接调用和Invoke得区别,直接调用是基于子线程来运行,而Invoke会基于UI线程存在,这点在

    做图形活着涉及带软件皮肤得程序时``需要特别注意,如果开子线程会丢失皮肤,开UI线程可能功能有区别,解决得办法

    是分解函数,将需要重新对变量赋值或操作得``用子线程完成, 而UI线程则通过前面子线程得操作结果来动态刷新页

    面.

     

     说得是自己得经验,有不对得地方尽管指出,一定虚心改正.

    发表于 @ 2007年06月08日 10:22:00|评论(loading...)|编辑

    新一篇: API注册热键 | 旧一篇: 男孩子变坏的原因

    评论

    #randomx 发表于2007-08-20 10:21:51  IP: 222.35.149.*
    您的第一种方法有点没看明白,搜索了一下也没找到相关的内容,能稍微解释一下吗?或者有个小例子?非常感谢
    #spkl1 发表于2007-09-19 09:52:26  IP: 221.0.44.*
    datagridview dgv1;//声明dgv1
    public Form2( datagriview dgv )
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();

    //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    this.dgv1=dgv;
    }

    public void flash(datagridview dv)//form2的刷新函数
    {
    datagridview.datasource=xx;
    }

    在form1中调用from2:
    form2 f=new form2(this.datagridview);//this.datagridview=form1.datagridview
    #jkn1207 发表于2007-10-22 16:53:25  IP: 61.183.133.*
    好像这样适用用于两个窗体,特别是在GIS中,可能涉及很多个
    不知道怎么实现。不只只出,还要回,前辈能不能赐教一下。
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © spkl