C# WinForm DataGridView显示数据问题
以前的程序是将登陆窗体作为应用程序中Run()的,然后使用线程池将主窗体显示出来,DataGridView上的数据也是有服务器返回并在客户端显示的,都没有问题。今天把程序改了下,把主窗体改为Run()的窗体,但是遇到了问题,客户端能收到服务器发来的数据,但是就是不能显示在DataGridView上,大家帮忙看看原因。
以前的程序代码:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new 登陆());
}
private void handleMsg(string commandStr)
{
switch (commandStr)
{
case "LoginSuccess":
{
buff = new byte[data.Length - leng];
for (int j = 0; j < data.Length - leng; j++)
buff[j] = data[leng + j];
memStream = new MemoryStream(buff);
memStream.Seek(0, SeekOrigin.Begin);
obj = formatter.Deserialize(memStream);
memStream.Close();
if (obj != null && obj is User)
user = (User)obj;
frm = new 申请及扫描(user, this);
登陆.LoginFormDelegate closeDelegate = new 登陆.LoginFormDelegate(loginForm.loginFormAction); //申明委托
loginForm.Invoke(closeDelegate, new String[] { "close" }); //调用委托
ThreadPool.QueueUserWorkItem(new WaitCallback(showAppScanfDialog), frm);
}
break;
#endregion
#region 获取服务器发来的自己已申请的作业
case "ReFreshApp": //获取服务器发来的自己已申请的作业
///取出数据
buff = new byte[data.Length - leng];
for (int j = 0; j < data.Length - leng; j++)
buff[j] = data[leng + j];
申请及扫描.AppScanfDelegate appScanfDelegate = new 申请及扫描.AppScanfDelegate(frm.AppScanfFromAppAction);
frm.Invoke(appScanfDelegate, new Object[] { buff });
break;
#endregion
}
}
#region 给dagvApp绑定数据表
public void AppScanfFromAppAction(byte[] buffer)
{
DataTable dt = new DataTable();
memStream = new MemoryStream(buffer);
memStream.Seek(0, SeekOrigin.Begin);
dt = (DataTable)formatter.Deserialize(memStream);
memStream.Close();
dagvApp.DataSource = dt;
dagvApp.AllowUserToAddRows = false; //不显示datagridview中的空白行
}
#endregion
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
登陆 loginForm = new 登陆();
if (loginForm.ShowDialog() == DialogResult.OK)
{
Application.Run(new 申请及扫描());
}
}
private void handleMsg(string commandStr)
{
switch (commandStr)
{
#region 登陆成功
case "LoginSuccess":
{
loginForm.DialogResult = DialogResult.OK;
buff = new byte[data.Length - leng];
for (int j = 0; j < data.Length - leng; j++)
buff[j] = data[leng + j];
memStream = new MemoryStream(buff);
memStream.Seek(0, SeekOrigin.Begin);
obj = formatter.Deserialize(memStream);
memStream.Close();
if (obj != null && obj is User)
user = (User)obj;
}
break;
#endregion
#region 获取服务器发来的客户已申请的作业
case "ReFreshApp":
///取出数据
buff = new byte[data.Length-leng];
for (int j = 0; j < data.Length-leng; j++)
buff[j] = data[leng + j];
frm.AppScanfFromAppAction(buff);
//申请及扫描.AppScanfDelegate appScanfDelegate = new 申请及扫描.AppScanfDelegate(frm.AppScanfFromAppAction);
//frm.Invoke(appScanfDelegate, new Object[] { buff });
break;
#endregion
}
}
#region 给dagvApp绑定数据表
public void AppScanfFromAppAction(byte[] buffer)
{
DataTable dt = new DataTable();
memStream = new MemoryStream(buffer);
memStream.Seek(0, SeekOrigin.Begin);
dt = (DataTable)formatter.Deserialize(memStream);
memStream.Close();
dagvApp.DataSource = dt;
dagvApp.AllowUserToAddRows = false; //不显示datagridview中的空白行
}
#endregion