如题,
parentForm是一个mdi容器,childForm有一个DataGrid,绑定了数据,选中其中一条记录。
点击parentForm的工具栏的按钮对选中的记录进行操作,请问要怎么处理?还是最好将工具栏和数据绑定控件放在同一个form里?mdi容器一般在什么情况下使用?如果不使用mdi容器,就要把很多功能模块都放在一个form里,似乎不台合适,我也不能老用ShowDialog吧
parentForm是一个mdi容器,childForm有一个DataGrid,绑定了数据,选中其中一条记录。
点击parentForm的工具栏的按钮对选中的记录进行操作,请问要怎么处理?还是最好将工具栏和数据绑定控件放在同一个form里?mdi容器一般在什么情况下使用?如果不使用mdi容器,就要把很多功能模块都放在一个form里,似乎不台合适,我也不能老用ShowDialog吧
private void dgrd_ClientData_DoubleClick(object sender, System.EventArgs e)
{
if (this.dgrd_ClientData.ReadOnly == true) //判断如果是在销售单中生成的窗体则不响应DataGrid的双击事件
{
int intCurrentRowNumber = this.dgrd_ClientData.CurrentCell.RowNumber;
string sendClientID,sendClientName;
sendClientID = this.dgrd_ClientData[intCurrentRowNumber,0].ToString().Trim();
sendClientName = this.dgrd_ClientData[intCurrentRowNumber,2].ToString().Trim();
string [] sendArray = new string [] {sendClientID,sendClientName};
SellTable.inputTextDataArray[0] = sendArray[0];
SellTable.inputTextDataArray[1] = sendArray[1];
this.Close();
}
}然后在要获得其数据的窗口里面://----------创建窗体,共用户选择客户----------
private void cmb_Client_DropDown(object sender, System.EventArgs e)
{
ClientDataManage newFrm = new ClientDataManage(false);
newFrm.setDataGridReadOnly();
newFrm.ShowDialog();
this.cmb_ClientID.IntegralHeight = false;//使组合框不调整大小以显示其所有项
this.cmb_ClientID.DroppedDown = false;//使组合框不显示其下拉部分
this.cmb_ClientID.Items[0] = inputTextDataArray[0];
this.cmb_ClientID.SelectedIndex = 0;
this.txt_Company.Text = inputTextDataArray[1];
this.cmb_ClientID.IntegralHeight = true;//恢复默认值
SendKeys.Send("{Tab}");//向活动应用程序发送Tab键,跳到下一控件
} //--------将所选客户的相关数据读入窗体---------
private void cmb_Client_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
this.txt_Company.Text = "";
string strSearchWord = this.cmb_ClientID.Text;
string sendSQL = "select 客户编号,名称 from 客户清单 where 客户编号 = '" + strSearchWord + "'";
DataTable tempDataTable = this.link.SelectDataBase(sendSQL);
if (tempDataTable.Rows.Count>0)
{
inputTextDataArray[0] = tempDataTable.Rows[0][0].ToString().Trim();
inputTextDataArray[1] = tempDataTable.Rows[0][1].ToString().Trim();
this.setTextData();
SendKeys.Send("{Tab}");//向活动应用程序发送Tab键,跳到下一控件
}
}就是2个窗体,3个事件,通过inputTextDataArray数组传递信息搞定
比如子窗口实现IEdit
MDIForm在打开子窗口时检查是不是IEdit接口,如果是显示编辑按钮,点击时
IEdit subForm = this.ActiveForm as IEdit;
subForm.Edit()具体处理还是在subForm内,这样系统扩展性强
在父窗体调用子窗体这个函数就可以.
最好不要把对子窗体中数据的操作拉到父窗体.父窗体中-------------------
childForm.Function();子窗体中-------------------
public void Function()
{
// 对数据操作的代码
}