Chciałem z poziomu kodu w C# wybierać kolejne RichTextBox np. do dodania tekstu lub wymazywania tekstu z nich
richTextBox5.Clear(); <- to mnie nie urządza bo tu mam na stałe że tyczy to 5-tego RichTextBox
A ja chce w zależności od Eventa tam gdzie jest kliknięcie myszką w którym RichTextBox tam żeby to się tyczyło tego pola
Coś takiego -> richTextBox[x].Clear(); richTextBox(x).Clear(); jak tą zmienną określić w RichTextBox żeby tyczyło się RichTextBox o numerze x ?
Na początku kodu, np. w form FormLoad() zrób sobie tablicę ze wszystkimi swoimi rtb, coś w tym stylu:
List<RichTextBox> rtbs = new List<RichTextBox>();
private void MyFrm_Load(object sender, EventArgs e)
{
foreach(RichTextBox rtb in this.Controls.OfType<RichTextBox>())
{
rtbs.Add(rtb);
}
}
A później już tylko się odwołujesz:
rtbs[x].Clear()
Z tym, że to jest rozwiązanie wg. twoich wymagań. Mimo wszystko ja bym to zrobił tak:
private void YourRtb_Click(object sender, EventArgs e)
{
RichTextBox rtb = sender as RichTextBox;
rtb.Clear();
}
Dziękuję to działa lecz do tej listy podował mi jakoś nie po kolei te RichTextBox, np. w kodzie daję:
rtbs[1].AppendText("1"); <- a on mi dodaje tekst 1-dynkę w polu -> richTextBox12
tak jakby on sobie dodawał automatem w jakiejś dziwnej kolejności jak mu się podoba te RichTextBox
patrzyłem na parametr TabIndex i mam poukładane po kolei od 1 dla richTextBox1 do 12 dla richTextBox12
Myślałem że to można jakoś prościej zrobić że bezpośrednio w richTextBox(x).AppendText("2"); określić do którego się dotyczy bez dodawania tej listy itp.
To zamiast foreacha dodawaj ręcznie kontrolki do listy.
rtbs.Add(richTextBox1);
rtbs.Add(richTextBox2);
// itd.
Już chyba wyczaiłem o co chodzi on mi dodał w odwrotnej kolejności np. tekst w richTextBox1 dodaję przez rtbs[11].AppendText("1");
on liczy zdaję się od 11 do 0, w sumie może tak być, szkoda że na formie nie da się pozmieniać tego jakoś przypisać
wcześniej grzebałem w C++ Builder i Delphi i tam się dało
No to po prostu odwróć sobie tę listę:
rtbs.Reverse();