我在写一个C/S结构的系统时,是使用Socket编程,将所有的子窗口都写成了用户控件,根据标志动态添加到主窗口的Panel里,但是当数据传回客户端时,这些用户控件都添加不了,代码如下:主窗口:private void MenuClicked(object sender, EventArgs e)
{
LinkLabel myMenu = (LinkLabel)sender; switch (myMenu.Tag)
{
case "DataList":
DataBLL.BLL.MainPanel = this.panMain;
DataBLL.BLL.CurrentPage = 1;
DataBLL.BLL.GetDataList();
break;
..........
}
}DataBLL Class:public static class DataBLL
{
private panel mMainPanel = new panel;
private int mCurrentPage = 1;

public panel MainPanel
{
get {return mMainPanel;}
set {mMainPanel = value;}
}
public int CurrentPage
{
get {return mCurrentPage;}
set {mCurrentPage = value;}
} public void GetDataList()
{
SocketBLL.DataModule sendModule = new SocketBLL.DataModule(); sendModule.DataType = "DataList";
sendModule.ReturnType = "GetData";
.........
SocketBLL.DataSocket.Send(sendModule);
}
}SocketBLL.DataSocket Class:public static class DataSocket
{
public static Send(SocketBLL.DataModule sendModule)
{
//发送信息
}
public static ReceiveData(SocketBLL.DataModule sendModule)
{
//接收数据并处理 switch (sendModule.DataType)
{
case "DataList":
if (sendModule.ReturnType == "GetData")
procGetDataList(sendModule);
else
MessageBox.Show(sendModule.ReturnMessage); break;
.....................
}
}
public static procGetDataList(SocketBLL.DataModule sendModule)
{
DataListForm frmList = new DataListForm();
frmList.DataListTable = sendModule.DataTableList;
frmList.CurrentPage = SocketBLL.CurrentPage;
frmList.MainPanel = SocketBLL.MainPanel;

SocketBLL.MainPanel.Controls.Clear();
SocketBLL.MainPanel.Controls.Add(frmList); <====== 这一句就没有执行了
}
}