我正在尝试将另一种形式实施为已经完成的例程。基本上所有的代码都存在,我需要做的就是以不同的方式操作数据。
我有一个例如这样的例行程序。 这是一个释义的例子:
Private Sub getReportValues(ByRef fr As frmCustomReport, ByRef ReportInfo As ReportValues)
ReportInfo.eHeaderColor = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\FE Jupiter\MSSMonitor").GetValue("Report Equipment Header Color", "DCDCDC") 'Gainsboro
ReportInfo.mHeaderColor = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\FE Jupiter\MSSMonitor").GetValue("Report Monitor Header Color", "FFF8DC") 'Cornsilk
fr.btnEquipColor.PickedColor = System.Drawing.ColorTranslator.FromHtml("#" & Microsoft.VisualBasic.Conversion.Hex("&HFF" & ReportInfo.eHeaderColor))
问题在于(fr为frmCustomReport),我想让它成为一个system.windows.forms.form但是我会失去使用它的对象的能力。我还应该提一下,fr是一个模态对话框,我不想要一个真正的hacky controlcollection来解决这个问题。有没有人对此有好的指导?
另请注意!!!我想要在两个表单上访问的控件几乎相同。唯一的不同是布局和一些附加功能。
答案 0 :(得分:1)
如果没有更多信息,提供一个具体的例子有点困难。这将取决于您需要执行的交互量。创建一个接受Base Class作为参数的子例程,查看Name值,并使用CType将条件逻辑基于该类,以将Form强制转换为正确的类型。
Private Sub clickOtherFormsButton(Value As Form)
If Value.Name = "Form3" Then
Dim formObject As Form3 = CType(Value, Form3)
formObject.Button1.PerformClick()
ElseIf Value.Name = "Form2" Then
Dim formObject As Form2 = CType(Value, Form2)
formObject.Button1.PerformClick()
End If
End Sub