2017-07-17 3 views
-1

Ich habe ein datacontrol.cs (Benutzersteuerelement), diekann nicht in der Lage Wert Textbox hinzuzufügen

public void bindvalue(float currentvalue) 
{ 
    textbox1.Clear(); 
    textbox1.Text = currentvalue.ToString(); 
} 

I eine Form habe, durch ein Verfahren mit den Parametern des Stromwertes enthalten textbox1 und Code-Behind-Fenster ist, Hier die usercontrol in diesem Formular und die enthält eine Schaltfläche

Also beim Klicken auf die Schaltfläche übergeben sie einen aktuellen Wert von Methode zu der Datensteuerungsklasse wie folgt.

private void button_click(object sender, EventArgs e) 
{ 

    float currentvalue = 1500.00f; 
    datacontrol obj = new datacontrol(); 

    obj.bindvalue(currentvalue); 
} 

Alles funktioniert gut zu mir. Er übergibt den aktuellen Wert an die Klasse userControl und dort wird der aktuelle Wert dem textbox1.Text = currentvalue.ToString(); zugewiesen/hinzugefügt. Es zeigt keinen Fehler an. Aber schließlich zeigt das Textfeld keinen Wert.

Ich habe Haltepunkt verwendet, um die Funktionalität zu überprüfen. Es gab dem Textfeld einen aktuellen Wert. Aber seltsam !!! .. Ich kann nicht vorhersagen, was falsch in meinem Code ist. Helps geschätzt. :)

+1

Was ist 'datacontrol'? –

+2

Von dem, was ich sehe, tun Sie nichts mit Ihrem 'obj' abgesehen von der Deklaration, Sie hängen es nicht in Ihre Formularsteuerelemente oder irgendetwas – Icepickle

+0

Es ist ein usercontrol GUI @ BarryO'Kane – User6667769

Antwort

3

Ihre Instanz von datacontrol mit dem erforderlichen Wert (1500.00f) nicht auf dem Formular vorhanden ist. Sie enthüllen es nur, geben Wert weiter und vergessen es.

Wenn Sie bereits Benutzerkontrolle hinzugefügt haben, zu bilden und bindvalue Verfahren der bestehenden Steuer anrufen möchten, sollten Sie Folgendes tun:

private void button_click(object sender, EventArgs e) 
{ 
    float currentvalue = 1500.00f; 
    this.dataControl1.bindvalue(currentvalue); 
} 

Beachten Sie, dass dataControl1 ist der Name Ihres Benutzerkontrolle über die Form, es kann von dataControl1 abweichen.

Wenn Sie neue Benutzersteuerung erstellen und bindvalue anrufen, sollten Sie neue Instanz auf dem Formular hinzu:

private void button_click(object sender, EventArgs e) 
{ 
    float currentvalue = 1500.00f; 
    datacontrol obj = new datacontrol(); 

    obj.bindvalue(currentvalue); 
    this.Controls.Add(obj); 
} 

Wenn es bereits dynamisch Steuerelement auf dem Formular hinzugefügt wird, ein Feld der Form-Klasse deklariert, Weisen Sie eine neue Instanz des Steuerelements zu, wenn Sie es wünschen, und rufen Sie es wie im ersten Beispiel gezeigt auf.

+0

es Hinzufügen der Kontrollen wieder – User6667769

+0

@ User6667769 gut, wenn die Kontrolle existiert bereits, überprüfen Sie den ersten Beispielcode. –

+0

Ja danke, es funktioniert :) schön ... – User6667769

3

Sie Instanz datacontrol zum Formular hinzufügen müssen

datacontrol obj = new datacontrol(); 
obj.bindvalue(currentvalue); 
Controls.Add(obj); 
0

Sie können die bindvalue-Methode einfach aufrufen, indem Sie den Tagname Ihres Benutzersteuerelements im Button-Click-Ereignishandler verwenden. Aamir (Net-Entwickler)

Bitte markiert diesen Thread als Antwort

protected void Button1_Click(object sender, EventArgs e) 
{ 
    float myvalue = 150.50f; 
    datacontrol1.BindValue(myvalue); 

} 

Grüße, wenn: den Tag-Namen Angenommen ist ‚Datacontrol‘, dann sollten Sie die folgenden Codezeilen verwenden, um Ihre Aufgabe zu erreichen, es löste, was suchte ... danke

+0

Angenommen der Tag-Name Ist "Datenkontrolle", dann "Ihr Code ist falsch. Althgou ist es nur ein kleines Detail wie eine fehlende 1, aber es wird Ihren Code nicht kompilierbar machen. –

+0

Mong Zhu, wieso ist mein Code falsch? Ich habe diesen Code ausgeführt und die Ausgabe war in Ordnung. Dies ist nur ein kleines Stück Code. –

+0

Bitte lesen Sie, was Sie geschrieben haben. "Rufen Sie die Methode" bindvalue "auf, indem Sie den Tagnamen verwenden. Angenommen, der Tagname lautet" datacontrol ". Sie haben einen Tippfehler! weil du in deinem Code schreibst: 'datacontrol1.BindValue (myvalue);'. Es ist in der Tat ein kleiner Fehler, aber ein sehr wichtiger, denn wenn der Kontrollname wirklich 'Datenkontrolle' ist, dann wird der Code nicht kompiliert! –