Problème accès Textbox depuis une classe enfant
Bonjour,
Je viens de me mettre au C#/.Net pour un stage dans une entreprise qui arrive dans 2 mois. Je me suis donc lancé dans un projet relativement simple, faire une sorte de telnet graphique pour manier les Sockets, bref, rien de bien compliqué en soit même si j'en suis pas encore là pour le moment.
http://img403.imageshack.us/img403/2963/telnett.jpg
Client.cs
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Client : Form
{
public Client()
{
InitializeComponent();
}
private void m_envoyer_Click(object sender, EventArgs e)
{
ecrireTexte(m_message.Text);
}
private void m_message_TextChanged(object sender, EventArgs e)
{
}
private void m_message_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
ecrireTexte(m_message.Text);
}
}
private void label1_Click(object sender, EventArgs e)
{
}
private void m_serveur_TextChanged(object sender, EventArgs e)
{
}
private void m_port_TextChanged(object sender, EventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
}
private void Client_Load(object sender, EventArgs e)
{
}
private void m_connexion_Click(object sender, EventArgs e)
{
// ecrireTexte("test");
if ((m_serveur.Text == "") && (m_port.Text == ""))
{
Connexion plop = new Connexion();
}
else
{
try
{
int m_portInt = System.Convert.ToInt32(m_port.Text, 10);
Connexion plop = new Connexion(m_serveur.Text, m_portInt);
}
catch (FormatException error)
{
MessageBox.Show("Le port doit être un nombre valide");
}
}
}
public void ecrireTexte(String texte)
{
MessageBox.Show(texte); // La variable texte s'affiche bien
m_texte.AppendText(texte + Environment.NewLine);
}
}
} |
Connexion.cs
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 30 31 32 33 34 35 36 37 38 39 40 41 42
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
namespace WindowsFormsApplication1
{
public class Connexion : Client
{
private String m_serveur;
private int m_port;
public Connexion()
{
this.m_serveur = "irc.quakenet.org";
this.m_port = 6667;
connec();
}
public Connexion(string serveur, int port)
{
this.m_serveur = serveur;
this.m_port = port;
connec();
}
public void connec()
{
ecrireTexte("salut");
// suite du code, mais qui sert à rien pour le moment
}
}
} |
Client.Designer.cs
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
namespace WindowsFormsApplication1
{
partial class Client
{
/// <summary>
/// Variable nécessaire au concepteur.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Nettoyage des ressources utilisées.
/// </summary>
/// <param name="disposing">true si les ressources managées doivent être supprimées*; sinon, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Code généré par le Concepteur Windows Form
/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Client));
this.m_message = new System.Windows.Forms.TextBox();
this.m_envoyer = new System.Windows.Forms.Button();
this.m_texte = new System.Windows.Forms.TextBox();
this.m_connexion = new System.Windows.Forms.Button();
this.m_serveur = new System.Windows.Forms.TextBox();
this.m_port = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// m_message
//
this.m_message.Location = new System.Drawing.Point(100, 500);
this.m_message.Name = "m_message";
this.m_message.ShortcutsEnabled = false;
this.m_message.Size = new System.Drawing.Size(600, 20);
this.m_message.TabIndex = 0;
this.m_message.TextChanged += new System.EventHandler(this.m_message_TextChanged);
this.m_message.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.m_message_PreviewKeyDown);
//
// m_envoyer
//
this.m_envoyer.Location = new System.Drawing.Point(350, 546);
this.m_envoyer.Name = "m_envoyer";
this.m_envoyer.Size = new System.Drawing.Size(100, 30);
this.m_envoyer.TabIndex = 1;
this.m_envoyer.Text = "Envoyer";
this.m_envoyer.UseVisualStyleBackColor = true;
this.m_envoyer.Click += new System.EventHandler(this.m_envoyer_Click);
//
// m_texte
//
this.m_texte.Location = new System.Drawing.Point(100, 86);
this.m_texte.Multiline = true;
this.m_texte.Name = "m_texte";
this.m_texte.ReadOnly = true;
this.m_texte.Size = new System.Drawing.Size(600, 397);
this.m_texte.TabIndex = 2;
//
// m_connexion
//
this.m_connexion.Location = new System.Drawing.Point(40, 32);
this.m_connexion.Name = "m_connexion";
this.m_connexion.Size = new System.Drawing.Size(75, 23);
this.m_connexion.TabIndex = 3;
this.m_connexion.Text = "Connexion";
this.m_connexion.UseVisualStyleBackColor = true;
this.m_connexion.Click += new System.EventHandler(this.m_connexion_Click);
//
// m_serveur
//
this.m_serveur.Location = new System.Drawing.Point(198, 35);
this.m_serveur.Name = "m_serveur";
this.m_serveur.Size = new System.Drawing.Size(101, 20);
this.m_serveur.TabIndex = 4;
this.m_serveur.TextChanged += new System.EventHandler(this.m_serveur_TextChanged);
//
// m_port
//
this.m_port.Location = new System.Drawing.Point(420, 38);
this.m_port.Name = "m_port";
this.m_port.Size = new System.Drawing.Size(100, 20);
this.m_port.TabIndex = 5;
this.m_port.TextChanged += new System.EventHandler(this.m_port_TextChanged);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(145, 35);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(47, 13);
this.label1.TabIndex = 6;
this.label1.Text = "Serveur:";
this.label1.Click += new System.EventHandler(this.label1_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(385, 38);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(29, 13);
this.label2.TabIndex = 7;
this.label2.Text = "Port:";
this.label2.Click += new System.EventHandler(this.label2_Click);
//
// Client
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(784, 602);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.m_port);
this.Controls.Add(this.m_serveur);
this.Controls.Add(this.m_connexion);
this.Controls.Add(this.m_texte);
this.Controls.Add(this.m_envoyer);
this.Controls.Add(this.m_message);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Client";
this.Text = "Kikoo";
this.Load += new System.EventHandler(this.Client_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox m_message;
private System.Windows.Forms.Button m_envoyer;
private System.Windows.Forms.TextBox m_texte;
private System.Windows.Forms.Button m_connexion;
private System.Windows.Forms.TextBox m_serveur;
private System.Windows.Forms.TextBox m_port;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
}
} |
Donc mon problème est assez simple :
J'arrive à afficher du Texte dans la TextBox (m_texte) lorsque je rentre un message et que j'appuie sur entrer/ou clique sur envoyer. Mais lorsque j'essaye d'envoyer une chaine depuis ma classe enfant avec l'instance connec(), la fonction parente reçoit bien le message (J'ai la chaine qui apparait dans une MessageBox) mais je n'arrive pas à ajouter la chaine à ma TextBox m_texte.
Bref, j'ai du mal à comprendre
Merci d'avance !
edit: Bon en fait j'ai identifié le problème je pense, lorsque je fais
Code:
1 2 3 4 5 6 7 8 9 10
|
public void ecrireTexte(String texte)
{
m_texte.AppendText(texte + Environment.NewLine);
// m_texte.Text += (texte + Environment.NewLine) ; // Fait la même chose
MessageBox.Show(m_texte.Text);
} |
La MessageBox affiche bien la valeur qu'elle est sencé recevoir sauf qu'elle s'ajoute pas avec le contenu de m_texte et ne s'affiche pas non plus graphiquement. :/