Chciałem z poziomu kodu w C# wybierać kolejne RichTextBox

0

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 ?

0

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();
}
0

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.

0

To zamiast foreacha dodawaj ręcznie kontrolki do listy.

rtbs.Add(richTextBox1);
rtbs.Add(richTextBox2);
// itd.
0

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

0

No to po prostu odwróć sobie tę listę:

rtbs.Reverse();

1 użytkowników online, w tym zalogowanych: 0, gości: 1