RadioButton bleibt nicht "Checked"
-
Hallo Leute,
Ich habe mit Windows Forms 2 Fenster programmiert, Form1 hat 3 Radiobuttons von denen ich jeweils immer nur einen auswählen kann.
Wenn RadioButton1 Checked ist geht Form 2 auf mit einer TextBox, darin kann ich etwas eintragen und dieser Text wird abgespeichert. Soweit ist alles gut, aber wenn ich jetzt die Form2 schließe geht mein RadioButton jedes mal auf Unchecked, also der grüne Punkt ist weg^^.
Hätte aber gerne dass dieser checked bleibt. Kann ich da vllt etwas mit einer Return schleífe oder so machen? Wäre sehr dankbar über Lösungsvorschläge.
Gruß Cat123
-
Cat123 schrieb:
Return schleífe
rofl
Mal wieder so ein Ratespiel. Zeig Code oder freu Dich über ausbleibende Antworten.
-
Sorry
´Form1:
private void RadioButton1_Checked(object sender, EventArgs e)
{{
if (RadioButton1.Checked){
Form2 f2 = new Form2(ref TextBox);f2.ShowDialog();
}
}Form2:
public Form1( ref TextBox tb )
{tbform1 = tb;
InitializeComponent();
}private void OK_Click(object sender, EventArgs e)
{
tbform1.Text = textBox1.Text.ToString();
this.Hide();}
}
}
-
Dieser Code ist nicht vollständig und erklärt nicht, warum der Radiobutton hinterher wieder unselektiert ist. Er ist nichtmal syntaktisch korrekt (überflüssige Klammer, falscher Konstruktorname) also wer weiß was Du sonst noch alles verbrochen hast.
Wahrscheinlich feuert irgendein Event in dem Du den RB wieder abwählst. Schau einfach wo das überall passieren kann.
Z.B. kann die Zeile
tbform1.Text = textBox1.Text.ToString();
ein TextChanged-Event der Textbox in Form1 auslösen.Abgesehen davon, dass es unnötig ist die TextBox per "ref" zu übergeben (zum googlen: Call-By-Value von Referenztypen vs. Call-By-Referenz von Referenztypen), ist es sowieso selten eine gute Idee auf Controls einer anderen Form zuzugreifen. Ist aber wahrscheinlich sowieso nur ein Spielzeugprojekt, oder?
-
Ja ist nur etwas rumgebastel, bin ja auch noch blutiger Anfänger.
Würde es aber trotzdem gerne so hinbekommen. Ich hab kene Ahnung an was es sonst liegen könnte. Sobald ich Form2 schließe wird dieser verdammte RadioButton wieder unchecked. Ich weiß dass es Pfuscherei ist aber könnte ich das evtl mit dem TextChanged Event hinkriegen
private void TB_D1_TextChanged(object sender, EventArgs e)
Also wenn sich der Text ändert dass er dann einfach gleich wieder auf checked gesetzt wird? Wäre dir sehr dankbar für ein Beispielcode.
-
Die Daten hälst Du in einer eigenen kleinen Klasse:
public class MyData : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string text; public string Text { get { return text; } set { text = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Text")); } } }
Form1 legt ein Objekt davon an und gibt es an Form2 weiter.
public partial class Form1 : Form { MyData mydata = new MyData(); public Form1() { InitializeComponent(); textBox1.DataBindings.Add("Text", mydata, "Text"); } private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (radioButton1.Checked) { Form2 f = new Form2(mydata); f.Show(); } } }
Form2 ändert nur das Property des Datenobjekts. Durch Databinding-Magie musst Du Dich um nicht weiter kümmern.
public partial class Form2 : Form { MyData data; public Form2(MyData data) { InitializeComponent(); this.data = data; textBox1.TextChanged += new EventHandler(textBox1_TextChanged); } void textBox1_TextChanged(object sender, EventArgs e) { data.Text = textBox1.Text; } private void button1_Click(object sender, EventArgs e) { Close(); } }