Wunderbar vielen Dank, hat mir echt weiter geholfen.
Ein Tipp für alle, die die Komponente benutzen wollen ich würde den Teil mit SuspendLayout weglassen. Da ich keinen sichtbaren Unterschiede gesehen habe außer, dass meine Checkboxen fehlerhaft dargestellt wurden. Ab Leerzeichen wurde der String nicht mehr angezeigt bzw. hat Text gefehlt, da sich die Größe nicht auf den neuen Text angepasst hat.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| private void SpracheAendern(CultureInfo ci) { Thread.CurrentThread.CurrentUICulture = ci; ComponentResourceManager crm = new ComponentResourceManager(this.GetType()); FieldInfo[] fieldInfos = this.GetType().GetFields(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.NonPublic);
String text = crm.GetString("$this.Text"); if (text != null) this.Text = text; for (int index = 0; index < fieldInfos.Length; index++) { if (fieldInfos[index].FieldType.GetProperty("Text", typeof(String)) != null) { text = crm.GetString(fieldInfos[index].Name + ".Text"); if (text != null) { fieldInfos[index].FieldType.InvokeMember("Text", BindingFlags.SetProperty, null, fieldInfos[index].GetValue(this), new object[] { text }); } } } } |
Hab dazu nun eine Frage die "gerufene" Form soll die "rufend"e Form ja nicht kennen. Nun benutze ich die Komponente, von oben, in dem Paint Event der ersten Form und löse diese mit owner.refresh() aus der zweiten Form aus. Verstößt das nun schon gegen die Regeln der OOP?