#1 06.04.12 04:00
c# помогите с программой
при нажатии на кнопку создаются вкладки в tabControl, в которых есть textbox и кнопка:
Код::
private void button4_Click(object sender, EventArgs e)
{
var tabPage = new TabPage("Страница");
tabPage.BackColor = Color.White;
tabControl1.TabPages.Add(tabPage);
TextBox textBox = new TextBox();
textBox.Location = new Point(10, 50);
Button button = new Button();
button.Text = "Нажми";
button.Location = new Point(10, 10);
button.Click += new EventHandler(button_Click);
tabPage2.Controls.Add(textBox);
tabPage2.Controls.Add(button);
}подскажите плз, как сделать, чтобы в выбранной вкладке при нажатии на кнопку в textbox добавился текст?
Код::
private void button_Click(object sender, EventArgs e)
{
textBox.Text = "Вот он!";
}говорит
Элемент "textBox" не существует в текущем контексте.
Offline
#3 06.04.12 17:29
Re: c# помогите с программой
[PAUL], я понемаю, что этот элемент там не виден. я и спрашиваю, как сделать видимыми элементы выделенной страницы tabCOntrol'a?
у меня во всех вкладках одинаковые названия (button, textBox) элементов
если их сделать видимыми, то они будут переходить из вкладки во вкладку, так как будут одни и теже. а мне нужно выбрать именно те, которые сейчас видны. вот(
Offline
#4 06.04.12 19:26
Re: c# помогите с программой
а типа
сендер.парент.контрол.индексоф("textBox").текст = ...
просто не помню точные названия, идея в поиске текстбокса у родителя кнопки, вызвавшей эвент.
еще можно завести массив с парами текстбокс+кнопка, и потом в этом массиве искать сендер, то есть кнопку, по ней уже будет видно какой текстбокс к ней относится.
Исправлено Fire Stream (06.04.12 19:27)
Offline
#6 06.04.12 23:08
Re: c# помогите с программой
как я хотел:
коротко:
Код::
((TextBox)((TabPage)((Button)sender).Parent).Controls.Find("textBox", false)[0]).Text = "blablabla";по нормальному:
Код::
if (!(sender is Button)) return;
Button b = (Button)sender;
if (!(b.Parent is TabPage)) return;
TabPage tp = (TabPage)b.Parent;
Control[] c = tp.Controls.Find("textBox", false);
if ((c.Length <= 0) || (!(c[0] is TextBox))) return;
TextBox tb = (TextBox)c[0];
tb.Text = "blablabla";Исправлено Fire Stream (06.04.12 23:08)
Offline
#8 06.04.12 23:35
Re: c# помогите с программой
даже можно еще проще, там лишнего написал:
Код::
((TextBox)((Button)sender).Parent.Controls.Find("textBox", false)[0]).Text = "blablabla";и
Код::
if (!(sender is Button)) return;
Button b = (Button)sender;
Control[] c = b.Parent.Controls.Find("textBox", false);
if ((c.Length <= 0) || (!(c[0] is TextBox))) return;
TextBox tb = (TextBox)c[0];
tb.Text = "blablabla";и конечно для этого надо при создании текстбокса вписать:
Код::
textBox.Name = "textBox";
Offline
#10 07.04.12 00:09
Re: c# помогите с программой
Sash'ok, да, но выделенная вкладка и есть родитель кнопки)))
просто последний вариант лучше, так как в нем пофиг на чем у тебя стоят эти кнопка и текстбокс, и не важно имя "tabControl1". То есть если ты теперь кнопку и текстбокс вставишь в групбокс, то все так же будет работать. Получается более самостоятельная и абстрактная структура.
Offline

