2012-10-12 2 views
0

Aujourd'hui, je pose une question, In C# winform program.Transmettre des données d'un formulaire à un autre

s'il y a Forme A et Forme B; Formulaire B a une zone de texte (il faut lire seulement)

Le formulaire Un code comme ceci:

B b = new B("FormB"); 
b.Show(); 

Le code FormB comme ceci:

situation1:

public B(string str) 
{ 
    this.textbox1.text = str; 

    this.textbox1.Enable = false; 
} 

Je déploie le programme sur le serveur client, mais le textbox1.text = "" n'a aucune valeur, mais il fonctionne sur mon ordinateur local.

J'essaie ceci:

Situation2:

public B(string str) 
{ 
    this.textbox1.text = str; 

    this.textbox1.ReadOnly = true;   
} 

Puis texbox1.text = "FormB"; il travaille dans mon ordinateur local et un serveur client.

La question clé et importante est, pourquoi la situation1 peut fonctionner mon ordinateur local ne fonctionne pas dans le serveur client?

Quelqu'un peut-il dire pourquoi?

+0

où vous avez initialisé vous objet de FormB – JSJ

+0

B du public (string str) { InitializeComponent(); this.textbox1.text = str; this.textbox1.Enable = false; } –

Répondre

2

Permettez-moi de voir si je vous comprends bien, vous demandez pourquoi le texte sur la TextBox est mis à jour lorsque vous utilisez ReadOnly = true et pasEnabled = false?


Si oui, je suppose que c'est par conception.

De MSDN: TextBoxBase.ReadOnly Property

Lorsque cette propriété est définie sur true, le contenu du contrôle ne peut pas être modifié par l'utilisateur lors de l'exécution. Lorsque cette propriété est définie sur true, peut toujours définir la valeur de la propriété Text dans le code. Vous pouvez utiliser cette fonctionnalité au lieu de désactiver le contrôle avec la propriété Activé à permettent de copier le contenu et d'afficher les info-bulles.

+0

mais, la situation1 peut fonctionner correctement sur mon ordinateur local, ne fonctionne pas dans le serveur client. Comment expliquer cela? à cause de l'OS? ou en cours d'exécution? –

+0

Existe-t-il différentes versions de .Net tournant sur votre environnement local et le serveur client env.? –

0

Vous devez avoir InitializeComponent() dans votre constructeur - le même que le constructeur vide.

http://www.dotnetperls.com/initializecomponent

+0

L'appel de la base devrait aussi fonctionner: 'public B (chaîne str): base()' –

+0

@JoelEtherton Oui ou cela. – LukeHennerley

+0

bien sûr, mon constructeur inlcude InitializeComponent comme ceci: public B (string str) { InitializeComponent(); this.textbox1.text = str; this.textbox1.Enable = false; } –

Questions connexes