Чтобы программно извлечь TabPage, где элемент управления RichTextBox содержится вы должны искать все TabPage внутри TabControl и проверьте, есть ли RichTextBox в этой странице, имеет имя, которое вы искали
foreach(TabPage tp in yourTablControl.TabPages)
{
RichTextBox rtb = tp.Controls.OfType<RichTextBox().FirstOrDefault(x => x.Name == name + "ChatArea");
if(rtb != null)
{
// rtb is your control, do your stuff in a sub
// passing the found control and break the loop
DoYouStuffWithRichTextBox(rtb)
break;
}
}
Конечно вы должен иметь способ идентифицировать переменную часть этого кода. Значение переменной имя должно быть установлено перед входом в этот цикл с фактическим значением, которое вы ищете.
Этот код будет проще, если мы можем предположить, что для каждого TabPage имеется только один RichTextBox. В этом случае, когда динамически создавая TabPage и его RichTextBox можно задать имя свойства TabPage в вашей области чата и использовать его как способ определить элемент управления
TabPage tp = yourTablControl.TabPages["chatAreaName"];
RichTextBox rtb = tp.Controls.OfType<RichTextBox().FirstOrDefault();
if(rtb != null)
{
....
Какие технологии? WinForms? WPF? ASP.NET? Это важно – Steve
Вы ошиблись. Суть заключается в том, что свойство '.Name' ** полностью независимо ** к объявлению C# элемента управления RichTextBox chatWindow'. Изменение свойства name - это действие во время выполнения, и оно не влияет на имя C# для компиляции C#. – Enigmativity
Я использую winforms. – K0D3R