我有一个包含8个标签的VB应用程序。
此应用程序编辑/添加内容并打印报告。第一个标签是默认的。
但是,我对大多数需要通过报表作为参数传递的选项卡有一些约束,所以如果我在点击选项卡之前运行报表,它就不会获得该值。我试图得到的这些控件只是Checkboxes,运行报告发送所有False,我知道有检查的。我不确定如何获得正确的值而无需单击选项卡本身。
以下代码全部用于我的主要表单..
Public Sub New(ByVal session As UserSession, ByRef caller As Form)
InitializeComponent()
thisSession = session
IncidentControl1.FormSession = session
PersonsControl1.FormSession = session
VictimControl1.FormSession = session
VehicleControl1.FormSession = session
UseOfForceControl1.FormSession = session
NarrativeControl1.FormSession = session
callingForm = caller
blnHome = True
End Sub
Private Sub UseofForceFormv1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
InitializeDataStructures()
LoadReport()
CreateDataRelations()
SetUpTabControls()
SetupDataBindings()
SetStatusLabels()
addHandlers()
thisSession.sigAdmin
TabControl1.SelectTab(1) ' these 2 lines fixed my issue
TabControl1.SelectTab(0)
End Sub
Private Sub SetUpTabControls()
LocationTab1.SetupTab(subLocationDT, thisSession, thisSession.reportID, dsMain)
ActorTabv11.SetupTab(dsMain, thisSession)
End Sub
这是我主要表单中的标签..
Public Sub SetupTab(ByRef formDataSet As DataSet, ByVal session As UserSession)
incidentReportDS = formDataSet
thisSession = session
thisSession = session
'incidentReportDS = incidentReportDS
dataUtil = New DAL.DataUtil
bcActor = BindingContext(vwActor)
vwIncidentArrest = Actors(0).IncidentArrest()
SetupFieldAvailableValues()
SetUpDataBindings()
AddEventHandlers()
bcActor_PositionChanged(Me, EventArgs.Empty)
End Sub
编辑: 我在主窗体加载结束时添加了 TabControl1.SelectTab()方法来选择我想要的选项卡,然后选择第一个选项卡,导致它们全部加载。
答案 0 :(得分:4)
这种行为(问题)是可以预期的。引用MSDN:
“在显示标签页之前,不会创建TabPage中包含的控件,并且在显示标签页之前不会激活这些控件中的任何数据绑定。”
<强>解决方案强>
要解决此问题:"make each tab page active before making the form visible."