Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2008, 14:26   #1
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
Плохо как поменять текст в лабел главной формы

Доброе время суток!!!
Прошу помочь в таком вопросе: ни как не могу сообразить как обратится к компоненту из другого модуля в MVStudio 2005 (c#), тоесть есть две формы (да если просто создать другое простронство имени), то я не могу понять как, к примеру, поменять текст в лабел формы2 из формы1.
Единственный приличный формат, разработанный Microsoft'ом, - format c:

Последний раз редактировалось MAcK; 03.05.2008 в 14:30.
MAcK вне форума Ответить с цитированием
Старый 03.05.2008, 14:37   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

У компонента, к которому хочешь обратиться в поле Modifiers поставь public. Но это плохой тон программирования. Лучше сделай в форме где ты хочешь поменять label public метод, который это сделает и вызывай из второй формы.

Код:
public void ChangeLabelCaption(string text)
{
   this.label1.Text = text;
}
Hollander вне форума Ответить с цитированием
Старый 03.05.2008, 14:46   #3
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Большое спасибо, но вот в делфях я просто подключаю модуль в uses ... такого в с# разве нет?

да ещё один прикол ... по примеру из книги делаю так ... создаю глобальную переменную для показа дочерней формы ... создаю ее, в мди парент ставлю ЗЗис и потом visible = true, но форма не создаётся, хотя таким же методом создал ещё одну и всё нормально (в главной есть дочерняя в которй пользователь вводит данные для подключения к серверу если успешно, то хотел в другой доченей вывести инфу о базах с сервера, так первая доч. создалась без проблем, а вторая нет)
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 03.05.2008, 14:54   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Не создается или не показывается. Если не показывается, то возможно ты забыл Show() сделать
Hollander вне форума Ответить с цитированием
Старый 04.05.2008, 15:25   #5
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
Печаль

Пробовал всё что знал, но не получается ни текст в другой форме(в данном примере в главной) поменять, ни создать вторую как дочернюю ...
Я немного разобрался: делаю так в первой дочерней ---
private void button1_Click(object sender, EventArgs e)
{
Form1 ff = new Form1(); //главная (я то понимаю, что сдесь создаётся новый объект, но подругому не умею )
ff.tlabelchanche("Создал новый образец");

Child2 ch = new Child2();
ch.MdiParent = ff; /*если закоментировать то появится при обработки следующей строки, но не как дочерняя*/
ch.Show();
this.Hide();
//ff.chancheform();
ff.Close();
}

А вот главная форма


public partial class Form1 : Form
{
static child1 chld1 = new child1();
//static Child2 chld2 = new Child2();
public Form1()
{
InitializeComponent();
}
public void tlabelchanche(string text)
{
this.toolLabel.Text = text;
}

private void Form1_Load(object sender, EventArgs e)
{
this.tlabelchanche("Выполнилась загрузка");
chld1.MdiParent = this;
chld1.Show();
}
public void chancheform()
{
/*вот сдесь не работает -- не хочет показываться в главной*/
//chld2.MdiParent = this;
chld1.Hide();
//chld2.Show(); // если закоментировано, то создаётся, но не как дочерняя
}


}


если покажите на примере как это всё сделать, буду очень благодарен
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 05.05.2008, 14:06   #6
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Вот ответ на часть вопроса ... создаётся вторая форма как дочерняя, а второй вопрос остаётся в силе, как поменять текст в лабел главной формы!!!

Form ff = this.ParentForm;
Child2 ch = new Child2();
ch.MdiParent = ff;
ch.Show();
this.Hide();
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 05.05.2008, 15:02   #7
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

Создайте делегат,
Код:
form1....
publuc delegate CallLabel(string s);
public setLabel(string s);
после создания второй формы, передавайте ей ch.FuncCall((CallLabel)setLabel);
потом из второй формы вызывайте эту функцию
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок
OrdJONY вне форума Ответить с цитированием
Старый 07.05.2008, 10:32   #8
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
Смех

Цитата:
Сообщение от OrdJONY Посмотреть сообщение
Создайте делегат,
Код:
form1....
publuc delegate CallLabel(string s);
public setLabel(string s);
после создания второй формы, передавайте ей ch.FuncCall((CallLabel)setLabel);
потом из второй формы вызывайте эту функцию
Ничего не получилось

Интересно получается, сам сижу и отвечаю на свои вопросы ...

Нет ничего проще, и не надо ломать голову

Вот что в дочерней форме:

public partial class Form2 : Form
{
private Form1 ff;
public Form2()
{
InitializeComponent();
}
public Form2(Form1 formParent)
{
InitializeComponent();
ff = formParent;
}

private void button1_Click(object sender, EventArgs e)
{
ff.chancheLabel(textBox1.Text);

}
}



Вот что в главной:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
public void chancheLabel(string s)
{
this.label1.Text = s;
}

private void toolStripButton1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this); //Красота, и создаётся множество доч. форм
frm.MdiParent = this;
frm.Show();
}

}
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 08.05.2008, 12:42   #9
НЕ_АЙС
Форумчанин
 
Регистрация: 18.04.2007
Сообщений: 135
По умолчанию

http://www.programmersforum.ru/showthread.php?t=18530
НЕ_АЙС вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зная ProcessID получить Handle главной формы? NikLik Win Api 8 27.08.2021 21:29
Проблемы с загрузкой главной страницы. antfrolov Помощь студентам 2 05.04.2008 16:50
Как поставить заставку перед запуском главной формы программы? NiganInterCOM Общие вопросы Delphi 2 22.02.2008 16:11
Скрытие главной формы во время работы приложения Gorin Общие вопросы Delphi 7 23.08.2007 19:44
Как плавно поменять цвет формы гера Помощь студентам 1 20.04.2007 15:35