客户端第二个窗体从第一个窗体获取的数据是前一次获取的数据...求救.

问题描述

各位大神.有个问题求教.C#中,我做了两个窗体.这是一个客户端,第一个窗体是登录,第二个是接收数据显示数据的窗体..Form1中:publicstaticstringMsg_Str;voidMsgtoStr(stringMsg){Msg_Str=Msg;//从服务端返回的数据附值给Msg_Str;}voidthreadPro()//委托{MethodInvokerMethodIn=newMethodInvoker(ShowForm);BeginInvoke(MethodIn);}voidShowForm()//调用窗体{Form2form2=newForm2();form2.Show();}voidButton1Click(objectsender,EventArgse){this.Hide();Threadthrpro=newThread(threadPro);thrpro.Start();}Msg是接收到的数据.我附值给了Msg_Str.Form2中:voidButton1Click(objectsender,EventArgse){Form1.SendSelectMsg(textBox1.Text);//发送数据richTextBox1.AppendText(Form1.Msg_Str);//把反回的数据加到richTextBox中}为什么点击Form2中的按钮richTextBox1中总是显示上一次返回的数据?我的问题出在哪?有什么办法可以解决么?

解决方案

解决方案二:
看不太懂你要什么,登录后Form1.Msg_Str的值只赋值一次,当然一直是那个值了。
解决方案三:
这个MsgtoStr方法才是给Msg_Str赋值的方法,你那里调用了??
解决方案四:
SendSelectMsg做了什么?
解决方案五:
SendSelectMsg发送数据到服务器端,服务器端返回的数据通过MsgtoStr更新了Msg_Str,所以每点一次Form2里的按钮,Msg_Str都会改变,只是在Form2里返回的是前一次的Msg_Str,我在Form1里收到服务器返回数据做了个MessageBox.Show(Msg_Str),在弹出窗口里显示的是实时返回的数据.在Form2里的richTextBox1显示的是上一次返回的数据
解决方案六:
新手不要胡乱抄代码打开个窗体用委托?都什么思路直接在主线程里写代码打开窗体不就得了
解决方案七:
Form1.SendSelectMsg(textBox1.Text);//发送数据richTextBox1.AppendText(Form1.Msg_Str);//把反回的数据加到richTextBox中你这是把网络通信在当单机版玩那刚发送完数据,哪里有数据返回除非你不用线程,而完全使用单线程的思路来做通信
解决方案八:
以上代码是不全的...这两个窗体里都是客户端,服务端里写好了收到数据处理后返回数据.客户端Form1里已经可以正常收到数据,我另外加了个弹窗显示返回的数据做为对照..客户端Form2向服务端发送数据的时候返回的数据在Form1的Msg_Str里,这些都是正常的,第一个窗体没有任何问题.现在问题是我在Form2里取Form1.Msg_Str时是上一次点击按钮返回的数据..关于打开窗体用委托,是因为我直接调用Form2,Form2发送一次数据(也就是点一次按钮后),Form2就无响应了,应该是被挂起了.而我用新建线程打开Form2,Form1和Form2都隐藏了.用了委托后都正常.所以就这么做了....呵呵...

时间: 2024-11-01 19:10:13

客户端第二个窗体从第一个窗体获取的数据是前一次获取的数据...求救.的相关文章

c#窗体-C#如何实现打开第二个窗体,第一个窗体关闭。

问题描述 C#如何实现打开第二个窗体,第一个窗体关闭. 设计了两个窗体,跳转到第二个窗体时,第一个窗体自动关闭,如何实现呢? 解决方案 创建新的线程: this.Close(); new System.Threading.Thread(() => { Application.Run(new 窗体()); }).Start(); 解决方案二: 如果不创建线程的话,只能隐藏的一个窗口,不能关闭,因为第二个是有第一个产生的. 解决方案三: 如果第一个窗体不是启动窗体 就算第二个窗体是第一个产生的 也是

急~~在子窗体中打开另个子窗体并关闭本窗体`为什么只关闭本窗体而无法打开

问题描述 DimfrmAsNewMDImainDimfrm2AsNewform2frm2.MdiParent=frmfrm2.Show()Me.Hide()我那里错了?? 解决方案 解决方案二:'DimfrmAsNewMDImain去掉!Dimfrm2AsNewform2frm2.MdiParent=me.MdiParentfrm2.Show()Me.Hide()'或直接Close掉解决方案三:当你使用NewMDImain的时候,只是把frm2加到了一个未显示出来的刚建立的MdiMain中了,而

浅谈C# 非模式窗体show()和模式窗体showdialog()的区别_C#教程

对话框不是模式就是无模式的.模式对话框,在可以继续操作应用程序的其他部分之前,必须被关闭(隐藏或卸载).例如,如果一个对话框,在可以切换到其它窗 体或对话框之前要求先单击"确定"或"取消",则它就是模式的. 一.如何调用 任何窗体(派生于基类Form的类),都可以以两种方式进行显示. //非模式窗体 From qform=new Form(); qform.Show(); //模式窗体 Form qform=new Form(); qform.ShowDialog(

MDI窗体程序中主窗体有N个子窗体,请问实例化问题?

问题描述 首先主窗体主要代码:privatevoidMenu_Click(objectsender,EventArgse){WinOperationClassP_Menu=newWinOperationClass();//声明对WinForm窗体进行操作的类对象P_Menu.ShowForm((ToolStripMenuItem)sender,this);//调用类中的方法,完成对窗体中ToolStripMenuItem控件相应项的操作}涉及到的类主要代码:winoperationclasspu

将窗体从属于主窗体

几乎所有正式一点的C++ Builder程序除了主窗体外都还有从属窗体,有时是对话框,有时是无模式窗口.VCL使得创建和显示从属窗体都易如反掌.但不是所有程序都适于采用无模式窗体,有些程序需要在一个主窗体内显示不同的内容.本文讨论如何将一个从属窗体"寄居"于主窗体中,从属窗体看上去是主窗体的一部分,用户甚至不知道一个从窗体正被显示.图A显示了一个主窗体,其客户区是一个从窗体. 理解子/父联系 这类程序的基本思路是让所有从属窗体都作主窗体的子窗体,这种设计在其他框架(如OWL或MFC)中

C#特殊类型窗体制作:制作字形窗体

原理:重写当前窗体 OnPaint 方法, 如下: protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawImage((Image)bit, new Point(0, 0)); } 一.窗体设计: #region Windows 窗体设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容. /// </summary> private

vb.net向父窗体传值-在vb.net中,子窗体如何向父窗体传值

问题描述 在vb.net中,子窗体如何向父窗体传值 多个窗体的变量对应的是多个SQL的视图(每个窗体变量数不同),当主窗体打开后OPC连接,打开子窗体(只能打开一个窗体),子窗体中_Load下读取的SQL视图变量名并读入一数组a(n)(全局变量)中,子窗体打开后,主窗体将a(n)读入b(n),并依据这些变量名寻找对应WINCC中的值.可是我的主窗体中应把判定子窗体是否打开的脚本写在什么事件下好呢,同时,我的OPC连接是不是也不能写在Form_Load下了,求高手指点. 解决方案 [VB.NET]

子窗体关闭父窗体刷新-关于子窗体关闭同时刷新父窗体的问题

问题描述 关于子窗体关闭同时刷新父窗体的问题 亲,是这样的,我现在在实习,最近在练习做一个C#连接Oracle然后对数据库进行增删改查的小程序,有一个问题,我简单说一下,就是我的父窗体有个dgv来显示数据库数据,然后有个增加数据Button点一下,出现子窗体,然后子窗体上有姓名,号码输入框,还有一个确定输入键.我想实现按一下确定输入键输入键,然后子窗体自动关闭,父窗体的dgv内容自动刷新,我百度了个方法,很管用,是这样的.//你在主窗体调用子窗体事件里面写: 子窗体f = new 子窗体();

子窗体最大化 vb2012-VB2012 子窗体最大化不完全的问题

问题描述 VB2012 子窗体最大化不完全的问题 设置了子窗体WindowsState属性为最大化但程序运行以后它却并不是最大化的需要改变一下父窗体的大小子窗体才会最大化 怎么能够让程序运行时,子窗体默认为最大化求解决方案 解决方案 Private Sub MDIParent1_Load(ByVal sender As System.Object ByVal e As System.EventArgs) Handles MyBase.Load Dim mdichild1 As New mdich