Slt!
Ca fait bientôt deux ans que je suis dans C# après de longues années en VB 6.0, alors j'aimerais savoir s'il existe les inputbox en C#, si oui commes les utiliser.
Merci
TM018
Version imprimable
Slt!
Ca fait bientôt deux ans que je suis dans C# après de longues années en VB 6.0, alors j'aimerais savoir s'il existe les inputbox en C#, si oui commes les utiliser.
Merci
TM018
Bonjour,
je ne sais pas ce qu'est une inputBox et ça m'intrigue ... 8O
Peut tu expliquer ce que s'est exactement et à quoi ça sert?
Merci :mrgreen:
Une petite recherche sur google te donnera pas mal de pistes...
Il y a aussi l'InputBox de SaumonAgile : http://www.codeplex.com/InputBox
Sinon tu peux toujours utiliser l'InputBox de VB.NET, en référençant l'assembly Microsoft.VisualBasic :
L'inconvénient, c'est que C# ne gère pas les paramètres optionnels, donc il faut tous les spécifier... Pour info, voilà les valeurs par défaut des paramètres :Code:
1
2
3
4 using Microsoft.VisualBasic; ... string result = Interaction.InputBox("Quel est ton nom ?", "Nom", "nom par défaut", x, y);
Citation:
Envoyé par MSDN
Salut!
J'informe que mon problème n'est toujours pas résolu!!!
Merci
TM018
Et pourquoi donc ? la solution de tomlev ne te suffit pas ?
Non, ca n'a pas marché, déja l'inclusion de Microsoft.visual basic ne passe pas (edition express peut être, je vais essayer avec Team).
et tout le reste ne considéré que comme erreur!!!
C'est très important les input box, ca remplace efficacement la création dynamique des labels ou textbox pour remplir un tableau!!!
Merci
TM018
Il faut pas seulement mettre un using, il faut aussi ajouter une référence à Microsoft.VisualBasic.dll dans ton projet, comme l'a dit smyley
Mais de toutes façons, c'est pas le bout du monde de créer ta propre InputBox, y en a pour 5mn... En plus celle de Microsoft.VisualBasic est très moche :roll:
Je pense que le mieux à faire, c'est créer mon inputbox, en plus que j'ai inséré la référence à VisualBasic et j'ai fait le using, le résultat est toujours négatif!
Merci beaucoup!
Slt!
Comme conseillé, j'ai essayé de créer mon propre controle inputbox en C#, mais je suis buté à un problème majeur se pose lors du retour de la form2 que je considère comme inputbox, je sais pas quel évènement m'aidera à ajouter les éléments passés en paramètres dans un tableau.
Jusque là, j'essaye de réafficher les éléments après la fermeture du Inputbox(grace aux constructeurs), mais il faut que j'ajoute le code pour réafficher le formulaire, conséquence: le formulaire principal s'affiche plusieurs fois, autant de fois que j'appele le inputbox.
Même si je passe par une classe publique, comment vais-je récupérer les valeurs des variables saisies dans le inputbox, il faut bien détecter l'évenement qui sensible à l'activation du formulaire, j'ai essayé avec form_activated(), mais ca n'a pas marché.
Un peu de code:
Code:
1
2
3
4
5 //dans la form2(Inputbox) int pond = int.Parse(ti.Text); string ns = ts.Text; this.Close(); Form1 fr = new Form1(pond, ns);
MerciCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 //dans la form1 public partial class Form1 : Form { string p; int x; public Form1(int val, string st) { InitializeComponent(); this.x = val; this.p = st; } private void kryptonButton1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.ShowDialog(); } private void Form1_Activated(object sender, EventArgs e) { tbi.Text = x.ToString(); tbs.Text = p; }
TM018
Il ne serais pas possible d'utiliser le form_closing ainsi lorsque le form2 fermer le code dans l'événement form_closing s'exécute et t'affiche se que tu désire.
form1 :
form2 :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public partial class Form1 : Form { string p; int x; public Form1(int val, string st) { InitializeComponent(); this.x = val; this.p = st; } private void kryptonButton1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.FormClosing += new FormClosingEventHandler(frm_FormCLosing); frm.ShowDialog(); } void frm_FormClosing(object sender, FormClosingEventArgs e) { tbi.Text = x.ToString(); tbs.Text = p; }
Il te suffit de faire en sorte que les varaible soit accessible et ca devrait fonctionner.Code:
1
2
3
4 int pond = int.Parse(ti.Text); string ns = ts.Text; this.Close();
les variables seront visibles pcq je fait un paddage par paramètres entre les 2form en utilisant les constructeurs, si je comprends bien, je dois implémenter la récupération des variables que j'ai nommées pond et ns dans l'event formclosing, je crois pas que c'est logique, pcq les variables sont vues dans la form1 déja avec ce que j'ai fait, maintenant, c'est l'event qui va réaliser leur affichage dans les 2testbox de form1.
Merci
TM018
Tu veux récupérer ce qui a été entré dans le form2 pour l'afficher dans le form1 c'est bien ca?? Car la tu réouvre un autre form1(qui est déja ouvert) pour faire ton traitement. Avec le FormClosing tu fait juste revenir sur ta form1 et tu peux faire un traitement avec l'évènement FormClosing. Le formClosing fait juste dire coome quoi si la form2 ferme il y a un traitement.
Sinon juste comme ça, c'est moins fatigant à coder sous cette forme :
et ça s'utilise comme ceci :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public partial class InputDialog : Form { public InputDialog() { InitializeComponent(); /* code perso relatif à mon implémentation, en gros on veut pas que ça soit redimensionable mais il faut pouvoir fermer */ MaximizeBox = MinimizeBox = false; CanResize = false; CanMove = true; } public static DialogResult ShowInputDialog(string Title, string Caption, ref string selected_text) { using (InputDialog dlg = new InputDialog()) { dlg.captionText.Text = Caption; dlg.Text = Title; dlg.valueBox.Text = selected_text; DialogResult result = dlg.ShowDialog(); if (result == DialogResult.OK) selected_text = dlg.valueBox.Text; return result; } } }
Les seules choses requises sont :Code:
1
2
3
4
5
6 string name = ""; if(InputDialog.ShowInputDialog("Hello","Quel est votre nom ?",ref name) == DialogResult.OK) { MessageBox.Show(String.Format("Salut {0} !",name)); }
- un textbox nommé valueBox
- un label nommé captionText
- un bouton OK avec comme DialogResult la valeur DialogResult.OK
- un bouton Annuler avec comme DialogResult va valeur DialogResult.Cancel
pas d'histoires bizarres de form_closing à faire, j'ai jamais vu un truc aussi affreux pour se faire une inputbox ou autre truc du genre ...