自定义控件绑定成功后,不能自动更新数据源
我自己定义了一个控件,控件里面有三个子控件:TextBox,ComboBox,DateTimePicker功能描述:
在不得到焦点的情况下,控件显示为TextBox,
如果获得焦点,结合传递的属性,决定是显示为ComboBox,还是DateTimePicker,同时TextBox隐藏。
,当再次失去焦点的时候,控件把ComboBox或者DateTimePicker选择的值赋给TextBox,显示TextBox,隐藏ComboBox或者DateTimePicker
绑定是成功的,但是更改控件的值不能更新到对应的数据源,不知道是怎么回事。 自定义控件 自动更新 --------------------编程问答-------------------- 控件中写个获取这些值的方法,并且定义为public。
在主画面获取值通过这个方法来获取即可。 --------------------编程问答--------------------
Public Event ValueChanged(ByVal sender As Object, ByVal e As EventArgs)
Protected Overridable Sub OnValueChanged(ByVal sender As Object, ByVal e As EventArgs)
RaiseEvent ValueChanged(sender, e)
End Sub
Public Overloads Property [Text]() As String
Get
Return Me.TextBox.Text
End Get
Set(ByVal value As String)
TextBox.Text = value
End Set
End Property
Private Sub TextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox.GotFocus
Try
If Me.TextBox.ReadOnly = True Then Exit Sub
Select Case mValueType
Case TextValueType.mText
Case TextValueType.mCombox
Me.ComboBox.Visible = True
Me.TextBox.Visible = False
If Me.TextBox.Text <> "" Then
Me.ComboBox.SelectedValue = Me.TextBox.Text
End If
Case TextValueType.mDate
If IsDate(Me.TextBox.Text) Then
DateTimePicker.Value = CDate(Me.TextBox.Text)
End If
Me.DateTimePicker.Location = Me.TextBox.Location
Me.DateTimePicker.Width = Me.TextBox.Width
Me.TextBox.Visible = False
Me.DateTimePicker.Visible = True
End Select
Catch ex As Exception
End Try
End Sub
Private Sub DateTimePicker_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateTimePicker.ValueChanged
Try
Text = Format(Me.DateTimePicker.Value, "yyyy-MM-dd")
RaiseEvent ValueChanged(sender, e) '如果不加这句,新增的时候,不正确。另外,修改也不行
Catch ex As Exception
End Try
End Sub
Private Sub ComboBox_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox.SelectedValueChanged
Try
Text = ComboBox.SelectedValue
RaiseEvent ValueChanged(sender, e) '如果不加这句,新增的时候,不正确。另外,修改也不行
Catch ex As Exception
End Try
End Sub
Private Sub TextBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox.TextChanged
Try
Select Case mValueType
Case TextValueType.mText
Case TextValueType.mCombox
Me.ComboBox.Visible = False
Me.TextBox.Visible = True
Case TextValueType.mDate
Me.DateTimePicker.Visible = False
Me.TextBox.Visible = True
End Select
Catch ex As Exception
End Try
End Sub
我的代码是这样写的,不知道问题出在哪里
补充:.NET技术 , VB.NET