Question DataBindings partiellement cassé
- Marc
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 90
- Remerciements reçus 0
il y a 6 ans 10 mois #23773
par Marc
DataBindings partiellement cassé a été créé 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]
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 6 ans 10 mois #23787
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:DataBindings partiellement cassé
Salut,
as-tu vérifié si le principe de ton code fonctionne en C# ?
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.
- Marc
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 90
- Remerciements reçus 0
il y a 6 ans 10 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
Je m'y suis mis il y à peut et je galère encore pas mal sur la philosophie
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 6 ans 10 mois #23792
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:DataBindings partiellement cassé
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.096 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- DataBindings partiellement cassé