Ne trouvant pas de classe pret à l'empoi de type InputBox, j'ai rapidement
designé un input box maison. J'ai trouvé ceci dans le doc:
public void ShowMyDialogBox()
{
Form2 testDialog = new Form2();
// Show testDialog as a modal dialog and determine if DialogResult = OK.
if (testDialog.ShowDialog(this) == DialogResult.OK)
{
// Read the contents of testDialog's TextBox.
this.txtResult.Text = testDialog.TextBox1.Text;
}
else
{
this.txtResult.Text = "Cancelled";
}
testDialog.Dispose();
}
Et si je fait pareil, j'ai evidement une erreur à la compilation me disans
que TextBox1 est inaccessible à cause de son niveau de protection. Je
comprend ce principe mais ne comprend pas pourquoi la doc propose un tel
exemple.
Je contourne mon problème avec une méthode publique qui me retourne la
chaine de caractère stockée dans le textbox.
Comment aurais je pu faire autrement? Déclarer le textbox en public
directement? Je ne suis pas sur que ce soit le meilleure solution...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Remi Thomas - MVP
"Fabian Vilers" écrivit...
Bonjour à tous,
Ne trouvant pas de classe pret à l'empoi de type InputBox, j'ai rapidement designé un input box maison. J'ai trouvé ceci dans le doc:
public void ShowMyDialogBox() { Form2 testDialog = new Form2();
// Show testDialog as a modal dialog and determine if DialogResult = OK. if (testDialog.ShowDialog(this) == DialogResult.OK) { // Read the contents of testDialog's TextBox. this.txtResult.Text = testDialog.TextBox1.Text; } else { this.txtResult.Text = "Cancelled"; } testDialog.Dispose(); }
Et si je fait pareil, j'ai evidement une erreur à la compilation me disans que TextBox1 est inaccessible à cause de son niveau de protection. Je comprend ce principe mais ne comprend pas pourquoi la doc propose un tel exemple.
Je contourne mon problème avec une méthode publique qui me retourne la chaine de caractère stockée dans le textbox.
Comment aurais je pu faire autrement? Déclarer le textbox en public directement? Je ne suis pas sur que ce soit le meilleure solution...
Donnez moi votre avis! Fabian
Hello, C'est vraiment suivant ton usage. Une propriété publique qui accéde à ton TextBox privé n'a de sens que si tu dois controler la cohérence du TextBox (numérique uniquement, majuscule, ...) Donc un Textbox déclaré public me semble pas trop mal.
Rémi
-- Rémi Thomas - MVP Visual C++ Développeur Windows indépendant http://www.xtware.com/cv
"Fabian Vilers" écrivit...
Bonjour à tous,
Ne trouvant pas de classe pret à l'empoi de type InputBox, j'ai rapidement
designé un input box maison. J'ai trouvé ceci dans le doc:
public void ShowMyDialogBox()
{
Form2 testDialog = new Form2();
// Show testDialog as a modal dialog and determine if DialogResult = OK.
if (testDialog.ShowDialog(this) == DialogResult.OK)
{
// Read the contents of testDialog's TextBox.
this.txtResult.Text = testDialog.TextBox1.Text;
}
else
{
this.txtResult.Text = "Cancelled";
}
testDialog.Dispose();
}
Et si je fait pareil, j'ai evidement une erreur à la compilation me disans
que TextBox1 est inaccessible à cause de son niveau de protection. Je
comprend ce principe mais ne comprend pas pourquoi la doc propose un tel
exemple.
Je contourne mon problème avec une méthode publique qui me retourne la
chaine de caractère stockée dans le textbox.
Comment aurais je pu faire autrement? Déclarer le textbox en public
directement? Je ne suis pas sur que ce soit le meilleure solution...
Donnez moi votre avis!
Fabian
Hello,
C'est vraiment suivant ton usage.
Une propriété publique qui accéde à ton TextBox privé n'a de sens que si tu
dois controler la cohérence du TextBox (numérique uniquement, majuscule,
...)
Donc un Textbox déclaré public me semble pas trop mal.
Rémi
--
Rémi Thomas - MVP Visual C++
Développeur Windows indépendant
http://www.xtware.com/cv
Ne trouvant pas de classe pret à l'empoi de type InputBox, j'ai rapidement designé un input box maison. J'ai trouvé ceci dans le doc:
public void ShowMyDialogBox() { Form2 testDialog = new Form2();
// Show testDialog as a modal dialog and determine if DialogResult = OK. if (testDialog.ShowDialog(this) == DialogResult.OK) { // Read the contents of testDialog's TextBox. this.txtResult.Text = testDialog.TextBox1.Text; } else { this.txtResult.Text = "Cancelled"; } testDialog.Dispose(); }
Et si je fait pareil, j'ai evidement une erreur à la compilation me disans que TextBox1 est inaccessible à cause de son niveau de protection. Je comprend ce principe mais ne comprend pas pourquoi la doc propose un tel exemple.
Je contourne mon problème avec une méthode publique qui me retourne la chaine de caractère stockée dans le textbox.
Comment aurais je pu faire autrement? Déclarer le textbox en public directement? Je ne suis pas sur que ce soit le meilleure solution...
Donnez moi votre avis! Fabian
Hello, C'est vraiment suivant ton usage. Une propriété publique qui accéde à ton TextBox privé n'a de sens que si tu dois controler la cohérence du TextBox (numérique uniquement, majuscule, ...) Donc un Textbox déclaré public me semble pas trop mal.
Rémi
-- Rémi Thomas - MVP Visual C++ Développeur Windows indépendant http://www.xtware.com/cv
Zoury
Salut Fabian ! :O)
Je contourne mon problème avec une méthode publique qui me retourne la chaine de caractère stockée dans le textbox.
Personnellement, je déclare une propriété publique (Value ou quelque chose dans le genre) qui retourne la valeur, mais le concept est le même.. Exposé le Textbox publiquement me semble être une mauvaise encapsulation et laisse beaucoup trop de contrôle à l'utilisateur de la classe à mon goût.
Voici d'ailleurs un exemple d'abus de pouvoir possible : '*** Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm As New Form2 DirectCast(frm.TextBox1.Parent, Form).Controls.Remove(frm.TextBox1) frm.ShowDialog()
End Sub '***
Tu me diras que l'exemple est extrêmement débile et qu'après tout, l'utilisateur n'a qu'à pas faire ça, MAIS il peut le faire quand et à mon avis ça ne devrait pas être possible. :O) Encapsuler proprement ce qui ne doit pas être exposé n'est, amha, qu'une bonne habitude à prendre.
-- Cordialement Yanick MVP pour Visual Basic
Salut Fabian ! :O)
Je contourne mon problème avec une méthode publique qui me retourne la
chaine de caractère stockée dans le textbox.
Personnellement, je déclare une propriété publique (Value ou quelque chose
dans le genre) qui retourne la valeur, mais le concept est le même..
Exposé le Textbox publiquement me semble être une mauvaise encapsulation et
laisse beaucoup trop de contrôle à l'utilisateur de la classe à mon goût.
Voici d'ailleurs un exemple d'abus de pouvoir possible :
'***
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim frm As New Form2
DirectCast(frm.TextBox1.Parent, Form).Controls.Remove(frm.TextBox1)
frm.ShowDialog()
End Sub
'***
Tu me diras que l'exemple est extrêmement débile et qu'après tout,
l'utilisateur n'a qu'à pas faire ça, MAIS il peut le faire quand et à mon
avis ça ne devrait pas être possible. :O)
Encapsuler proprement ce qui ne doit pas être exposé n'est, amha, qu'une
bonne habitude à prendre.
Je contourne mon problème avec une méthode publique qui me retourne la chaine de caractère stockée dans le textbox.
Personnellement, je déclare une propriété publique (Value ou quelque chose dans le genre) qui retourne la valeur, mais le concept est le même.. Exposé le Textbox publiquement me semble être une mauvaise encapsulation et laisse beaucoup trop de contrôle à l'utilisateur de la classe à mon goût.
Voici d'ailleurs un exemple d'abus de pouvoir possible : '*** Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm As New Form2 DirectCast(frm.TextBox1.Parent, Form).Controls.Remove(frm.TextBox1) frm.ShowDialog()
End Sub '***
Tu me diras que l'exemple est extrêmement débile et qu'après tout, l'utilisateur n'a qu'à pas faire ça, MAIS il peut le faire quand et à mon avis ça ne devrait pas être possible. :O) Encapsuler proprement ce qui ne doit pas être exposé n'est, amha, qu'une bonne habitude à prendre.