系统自带的动态生成的子窗口中,我们有时候需要对部分动态生成的控件进行部分调整的话,比如修改部分属性、动态添加一些事件处理等等。那么我们该如何引用到这些控件呢?
首先我们先介绍一下如何引用到子窗体。
Vb.Net |
'从主表去引用子窗口 Dim tbl As SmGrid=Proj.CurrentSmGrid Dim subForm As SmForm=tbl.SubForm If tbl.SubForm Is Nothing Then '打开子窗体 tbl.ShowSubForm(SubFormEditModeEnum.Edit) subForm=tbl.SubForm End If Proj.MsgDebug.Add(subForm.Text) '如果子窗口已经打开,则可以直接引用 subForm=Proj.OpenedForms("员工管理_tblMain_EditForm") Proj.MsgDebug.Add(subForm.Text) |
C# |
// 从主表去引用子窗口 SmGrid tbl = Proj.CurrentSmGrid; SmForm subForm = tbl.SubForm; if (tbl.SubForm == null) { // 打开子窗体 tbl.ShowSubForm(SubFormEditModeEnum.Edit); subForm = tbl.SubForm; } Proj.MsgDebug.Add(subForm.Text); // 如果子窗口已经打开,则可以直接引用 subForm = Proj.OpenedForms["员工管理_tblMain_EditForm"]; Proj.MsgDebug.Add(subForm.Text); |
通过窗体引用控件
Vb.Net |
Dim tbl As SmGrid = Proj.OpenedForms("员工管理").Grids("tblMain") Dim subFrm As FormEditSubForm = TryCast(tbl.SubForm, FormEditSubForm) Dim boxs As BoxControlCollection = subFrm.GridFieldControls.BoxControls Dim ctrl As ICaptionControl=boxs("FullName") Proj.MsgDebug.Add("Name:{0}",ctrl.Name) Proj.MsgDebug.Add("Caption:{0}",ctrl.Caption) Proj.MsgDebug.Add("CaptionAlign:{0}",ctrl.CaptionAlign.ToString()) Proj.MsgDebug.Add("CaptionWidth:{0}",ctrl.CaptionWidth) Proj.MsgDebug.Add("CaptionFont:{0}",ctrl.CaptionFont.ToString()) Proj.MsgDebug.Add("CaptionForeColor:{0}",ctrl.CaptionForeColor.ToString()) '获取用来绑定的实际控件 Dim txtFullName As SmDropDownBox=ctrl.BaseControl Proj.MsgDebug.Add("基础控件名称:{0}",txtFullName.Name) Proj.MsgDebug.Add("基础控件文本:{0}",txtFullName.Text) '修改属性 txtFullName.ForeColor=Color.Red '绑定事件 AddHandler txtFullName.TextChanged, AddressOf fullName_txtChanged '以下代码放到与方法体外部或全局代码中 Private Sub fullName_txtChanged(sender As Object,e As EventArgs) Dim txtCtrl As SmTextBox=sender MessageBox.Show(txtCtrl.Text) End Sub |
C# |
SmGrid tbl = Proj.OpenedForms["员工管理"].Grids["tblMain"] as SmGrid; FormEditSubForm subFrm = tbl.SubForm as FormEditSubForm; BoxControlCollection boxs = subFrm.GridFieldControls.BoxControls; ICaptionControl ctrl = boxs["FullName"] as ICaptionControl; Proj.MsgDebug.Add("Name:{0}", ctrl.Name); Proj.MsgDebug.Add("Caption:{0}", ctrl.Caption); Proj.MsgDebug.Add("CaptionAlign:{0}", ctrl.CaptionAlign.ToString()); Proj.MsgDebug.Add("CaptionWidth:{0}", ctrl.CaptionWidth); Proj.MsgDebug.Add("CaptionFont:{0}", ctrl.CaptionFont.ToString()); Proj.MsgDebug.Add("CaptionForeColor:{0}", ctrl.CaptionForeColor.ToString()); // 获取用来绑定的实际控件 SmDropDownBox txtFullName = ctrl.BaseControl as SmDropDownBox; Proj.MsgDebug.Add("基础控件名称:{0}", txtFullName.Name); Proj.MsgDebug.Add("基础控件文本:{0}", txtFullName.Text); // 修改属性 txtFullName.ForeColor = Color.Red; // 绑定事件 txtFullName.TextChanged += fullName_txtChanged; // 以下代码放到与方法体外部或全局代码中 private void fullName_txtChanged(object sender, EventArgs e) { SmTextBox txtCtrl = sender; MessageBox.Show(txtCtrl.Text); } |