Question DataBindings partiellement cassé

Plus d'informations
il y a 6 ans 9 mois #23773 par Marc
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:1]
#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

[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 9 mois #23787 par Laurent Dardenne
Salut,
as-tu vérifié si le principe de ton code fonctionne en C# ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 9 mois #23788 par Marc
Réponse de Marc sur le sujet Re:DataBindings partiellement cassé
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 :pinch:

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 9 mois #23792 par Laurent Dardenne
Utilise la portée script: pour les variables utilisées dans un eventhanlder. A tester...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.070 secondes
Propulsé par Kunena