一个收银系统,主页面a系统中,在操作员textbox框中,按enter进入小窗体b(里面为datagridview),双击一行,关闭b窗体,把值返回给a窗体的textbox框,我是利用构造行数和静态类来实现传值的,但是这样的在b中返回给a窗体,调用它的show方法,会出现窗体刷新的效果,如何解决这个问题,返回窗体而不刷新

解决方案 »

  1.   

    在b中返回给a窗体,调用它的show方法调用谁的show方法?
      

  2.   

    你的意思是b关闭后调用a.show()?主页面a,调用b.showdialog(),关闭b后,直接赋值给a。
      

  3.   

    我以前有做过winform子父窗体互相传值的 ,不知道对您有没有用,http://user.qzone.qq.com/727108117/infocenter
      

  4.   


    public class FormA : Form
    {
        protected TextBox txtName;
        
        //定义一个属性和你要修改的文本框对应
        public TextBox TxtName
        {
            get{return this.txtName;}
        }    private void txtName_Enter(object sender, EventArgs e)
        {
            FormB fb = new FormB(this);
            fb.ShowDialog();
        }
    }
    public class FormB : Form
    {
        public FormB()
        {
            //...
        }
        FormA _fa;
        public FormB(FormA fa)
           : this()
        {
            _fa = fa;
        }    ...
        {
             //点击datagridview后
              _fa.TxtName = "123";
             this.Close(); 
        }
    }
      

  5.   

    LZ这问题本身就很矛盾,你去调用show方法本身就会刷新窗体啊,窗体会在状态改变时刷新,想要不刷新,就别改变窗体状态,例如大小,隐藏,关闭之类的
    另外如果说只是看起来没刷新,把doublebuffered设成true看看
      

  6.   

    我的这个在日志里,有个winform子父窗体互相传值的日志
      

  7.   

    Show只是把窗口显示出来,并不会刷新窗口