Bonjour à tous, j'ai 2 procédures qui se ressemblent et qui font à prêt la même chose, j'aimerais faire qu'une seule procédure ou fonction.
Dans un cas (Bind_Parse) je "parse" la valeur d'un contrôle ((L'argument sender est un objet binding), dans l'autre cas Get_TrueCtrlValue j'obtiens sa valeur directement à partir de sa propriété (L'argument Sender est un objet Control).
Et comment obtenir l'objet binding à partir du control et vice versa (obtenir l'objet Control à partir de l'objet Binding) ?
Quelle est la meilleure solution parmis les 2 qui se prêtent le mieux à ce que je voudrais faire .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Public Sub Bind_Parse(ByVal sender As Object, ByVal e As System.Windows.Forms.ConvertEventArgs, Optional ByVal FormatStyle As FormatStyle = FormatStyle.NotSet) Dim Bind As Binding = CType(sender, Binding) Dim ctrl As Control = Bind.Control 'Dim ctrl As Control = CType(sender, Control) If TypeOf (ctrl) Is TextBox Then Dim c As TextBox = CType(ctrl, TextBox) If FormatStyle = Main.FormatStyle.Monnaie Then e.Value = Decimal.Parse(CType(e.Value, String), Globalization.NumberStyles.Currency) 'ColChangingValue = c.Text ElseIf TypeOf (ctrl) Is ComboBox Then Dim c As ComboBox = CType(ctrl, ComboBox) ElseIf TypeOf (ctrl) Is CheckBox Then Dim c As CheckBox = CType(ctrl, CheckBox) ElseIf TypeOf (ctrl) Is DateTimePicker Then Dim c As DateTimePicker = CType(ctrl, DateTimePicker) End If End SubJ'espère que vous pourrez m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Public Function Get_TrueCtrlValue(ByVal sender As Object) As Object Dim Value As Object = Nothing If TypeOf (sender) Is TextBox Then Dim c As TextBox = CType(sender, TextBox) Value = c.Text ElseIf TypeOf (sender) Is ComboBox Then Dim c As ComboBox = CType(sender, ComboBox) Value = c.Text ElseIf TypeOf (sender) Is CheckBox Then Dim c As CheckBox = CType(sender, CheckBox) Value = c.Checked ElseIf TypeOf (sender) Is DateTimePicker Then Dim c As DateTimePicker = CType(sender, DateTimePicker) If CStr(c.Tag) = "DBNull" Then ' Astuce pour retourner Nothing si le champs correspondant = DBNull Value = Nothing Else Value = c.Value End If End If Return Value End Function
Partager