Flash info

"Les IT Pros sont en train de migrer rapidement car PowerShell est plus facile et plus puissant que VBScript."

Microsoft Scripting Guys

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
marcci
Utilisateur

PowerShelleur Amateur
Messages: 90
graphgraph
Karma: 10  
DataBindings partiellement cassé - 21/06/17 11:11 Bonjour à tous,

je vais essayer d'expliquer clairement mon problème, merci de me pardonner si ce n'est pas le cas

J'ai 3 textbox, 1 bouton update et 1 DataTable.

La textbox1 ne sert qu'à la saisie
La textbox2 sert à la saisie et est "bindé" à la DataTable.
La textbox3 sert au contrôle du contenue de la DataTable.
Le bouton update copie le text de textbox1 dans la datatable.

Fonctionnement du code:
Je fais une saisie dans textbox1.
Je click sur le bouton Update.
On voit dans la textbox3 que la Datable est bien mise à jour et que la textbox2 est bien "bindé".

Maintenant je fais une saisie dans la textbox2 et presse "Entrée".
On voit dans la textbox3 que la DataTable est bien mise à jour.
Par contre si maintenant on click sur update, la DataTable est bien mise à jour mais textbox2 n'est plus "bindé" en lecture de la DataTable, mais en éciture toujours.

Quelqu'un sait-il pourquoi le fait de saisir dans une textbox "bindé" casse le lien en lecture et pas en écriture ?
Et si oui comment y remédier ?

Merci de votre aide.

Code:

  #Initialisation d'une DataTable $DataTable = New-Object System.Data.DataTable [void]$DataTable.Columns.Add('Col1') $DataTable.Rows.Add('coucou')|Out-Null [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null #Ce produit quand on click sur le bouton Update [scriptblock]$DataUpdate =  {     $DataTable.Rows[0].Col1 $textbox1.Text     $textbox3.Text $DataTable.Rows[0].Col1      } #Ce produit quand on appuis "entrée" dans la textbox2 [System.Windows.Forms.KeyPressEventHandler]$CheckDataTable =  {     if ($_.KeyChar -eq 13)     {         $textbox3.Text $DataTable.Rows[0].Col1     } } $form = New-Object System.Windows.Forms.Form $form.ClientSize = New-Object System.Drawing.Size(200,150) $form.Name "form" $form.Text "Form" $textbox1 = New-Object System.Windows.Forms.TextBox $textbox1.Location = New-Object System.Drawing.Point(50,5) $textbox1.Size = New-Object System.Drawing.Size(100,20) $textbox1.TextAlign 'Left' $form.Controls.Add($textbox1) $textbox2 = New-Object System.Windows.Forms.TextBox $textbox2.Location = New-Object System.Drawing.Point(50,30) $textbox2.Size = New-Object System.Drawing.Size(100,20) $textbox2.TextAlign 'Left' $textbox2.DataBindings.add((New-Object system.windows.forms.binding("Text",$DataTable,"Col1"))) $textbox2.DataBindings.Item('Text').DataSourceUpdateMode = [System.Windows.Forms.DataSourceUpdateMode]::OnPropertyChanged $textbox2.add_KeyPress($CheckDataTable) $form.Controls.Add($textbox2) $textbox3 = New-Object System.Windows.Forms.TextBox $textbox3.Location = New-Object System.Drawing.Point(50,85) $textbox3.Size = New-Object System.Drawing.Size(100,20) $textbox3.TextAlign 'Left' $textbox3.Enabled $false $form.Controls.Add($textbox3) $bouton = New-Object System.Windows.Forms.Button $bouton.Location = New-Object System.Drawing.Point(60,55) $bouton.Size = New-Object System.Drawing.Size(75,20) $bouton.Text "Update" $bouton.TabIndex 1 $bouton.add_click($DataUpdate) $form.Controls.Add($bouton) $form.ShowDialog()| Out-Null

  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5724
graph
Karma: 209  
Re:DataBindings partiellement cassé - 22/06/17 11:05 Salut,
as-tu vérifié si le principe de ton code fonctionne en C# ?
Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
marcci
Utilisateur

PowerShelleur Amateur
Messages: 90
graphgraph
Karma: 10  
Re:DataBindings partiellement cassé - 22/06/17 12:01 Mouais c#, c'est quand même moins simple que powershell.

Je m'y suis mis il y à peut et je galère encore pas mal sur la philosophie
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5724
graph
Karma: 209  
Re:DataBindings partiellement cassé - 22/06/17 14:07 Utilise la portée script: pour les variables utilisées dans un eventhanlder. A tester... Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
© 2020 PowerShell-Scripting.com