2016-03-28 1 views
0

Ich programmierte in VS2013 mit C#. Ich habe versucht, ein Dropdown-Textfeld (Telerik RadDropDownListElement) zu ändern. Die letzte Benutzereingabe ist der Standardwert beim Öffnen der Software.x.Text wird nicht aktualisiert, nachdem der Standardwert zugewiesen wurde

Ich habe Properties.Settings.Default.var verwendet, um die Benutzereingabe zu speichern. Wenn ich es x.Text zuweisen, kann ich nicht mehr auf den Wert in einem Textfeld zugreifen, das vom Benutzer zur Laufzeit eingegeben wurde.

public Initialize() 
{ 
    /****other initial ****/ 
    x.Text = Properties.Settings.Default.var; 
    // set text to default value 
} 

private void save_button_Click(object sender, EventArgs e) 
{ 
    Properties.Settings.Default.var = x.Text; 
    //x.Test still has the default value, not the value in textbox 

    Properties.Settings.Default.save(); 
} 

Ich habe versucht, Eigenschaft Bindung von folgenden Link verwenden, aber ich bekomme ein ähnliches Ergebnis. Automatically update the Application Setting using the binding from VS.Net Designer

Wie kann ich auf den Wert in der Textbox statt auf den Standardwert zugreifen, wenn ich auf die Schaltfläche "Speichern" klicke?

/**** bearbeiten Detail ****/
I x.Text zu var speichern kann, wenn ich
x.Text = Properties.Settings.Default.var;
kommentieren, aber dann der Standardwert wird nicht angezeigt.

Ich habe Dropdown-Liste als eine einfache Textbox verwendet. Wird dies einen signifikanten Unterschied machen?
Ich verwende nicht den Index der Dropdown-Liste, nur den Text.

+0

Haben Sie eine Klasse namens 'Properties.Settins' oder sind das nur zwei Tippfehler in Ihrer Frage? Hast du das eingegeben oder ausgeschnitten/eingefügt? Überprüfst du den Wert von x.Text im Debugger (frage dich über deinen kommentierten Code) oder von der Annahme, dass er in deinen Eigenschaften gespeichert wird oder nicht? –

+0

@KoryGill Entschuldigung für den Tippfehler. Ich tippte dies ein, da der andere Computer kein Internet hat. Ich habe den Wert von x.Text im Debugger überprüft. – Ray

+0

Ich ersetze alle meine Dropdown-Liste mit Textfeld, jetzt funktioniert es. – Ray

Antwort

0

Ich denke, es hängt davon ab, wie Sie die Dropdown-Liste zu füllen haben. Wenn es im ungebundenen Modus ist und Sie die Elemente manuell hinzugefügt haben, können Sie den Text des Steuerelements festlegen, aber wenn es gebunden ist, sollten Sie mit Wert arbeiten.

Allerdings würde ich anderen Ansatz vorschlagen. Anstatt Text festzulegen, legen Sie die SelectedItem-Eigenschaft (oder SelectedIndex-Eigenschaft) fest. Um die SelectedItem festgelegt, finden Sie das Element, das Sie müssen wählen, und weisen Sie auf die Eigenschaft:

radDropDownList1.SelectedItem = radDropDownList1.FindItemExact("your string", true); 

Achten Sie darauf, die FindItemExact ein Element zurückgibt, wenn nicht, überprüfen Sie Ihre Artikel und die gespeicherte Zeichenfolge, die Sie haben.

Es gibt auch einige andere Find * Methoden, die Sie verwenden könnten. Sie geben den Index zurück, der in der SelectedIndex-Eigenschaft festgelegt werden kann.

+0

Der vorherige Programmierer verwendet die Dropdown-Liste als ein Textfeld, so dass die Dropdown-Liste überhaupt nicht (leer) popuplated ist. Wird das einen Unterschied machen? – Ray

+0

In diesem Fall sollte dies gut funktionieren. Sie könnten es entweder durch RadTextBox ersetzen und sehen, wie es funktioniert, oder Sie könnten ein Beispiel hochladen, wo das Problem beobachtet werden kann, und ich kann es mir ansehen. – checho

+0

danke! Ich ersetze nur meine radDropDownList mit radTextBox, jetzt funktioniert es.Aber Ihre Lösung ist ziemlich nützlich für meine anderen Teile des Projekts. – Ray

0

Versuchen Properties.Settings.Default["mysetting"];

+0

was meinst du? Ersetzen Sie alle Properties.Settings.Default.var durch Properties.Settings.Default ["mysetting"]? Muss ich irgendwo mysetting deklarieren? – Ray

+0

Suchen Sie im Eigenschaftenverzeichnis Ihrer Lösung. Dort sollte eine Datei namens Settings.settings sein. Öffne es und starte die Einstellungen :) – Jace

+0

Ich habe meine Settings.settings bereits eingestellt. In meinem obigen Code ist "var" "string" "user" – Ray