Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обратиться к объекту другой формы, очень часто задаваемый вопрос 
V
    Опции темы
Ламо
Дата 27.12.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 27.12.2006

Репутация: нет
Всего: нет



Код
NewForm frm=new NewForm();
frm.ShowDialog();
frm.Controls["textBox1"].Text = "ляляля";


100%!!!!

Это сообщение отредактировал(а) Дрон - 27.12.2006, 16:37
PM MAIL   Вверх
ivashkanet
Дата 27.12.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Ламо, это ты к чему?

Одноразовые способы у нас не в ходу   smile   smile 

А все потому, что в твоем коде frm это локальная переменная, которая пропадет при выходе из метода. 
Следовательно ссылка на форму пропадет тоже.
А без ссылки на форму с ней уже ничего сделать не получиться  smile 

Это сообщение отредактировал(а) ivashkanet - 27.12.2006, 17:54
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 29.12.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Ламо, ShowDialog работает до тех пор пока форма не закрыта. То есть, твой
Код
frm.Controls["textBox1"].Text = "ляляля";

выполнится уже после закрытия формы !!!


--------------------
user posted image
PM MAIL WWW   Вверх
McSlash
  Дата 8.1.2007, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.1.2007
Где: Мурманск

Репутация: нет
Всего: нет



Описал формы как показал VisualProgrammerNET, но не могу придумать
как добраться до текст бокса на второй форме.
Сразу попробовал так
Код
f2.textBox1.Text="";

в результате ошибка (390): 'WinApp.Form2.textBox1' is inaccessible due to its protection level
Перевести могу smile но, как тогда правильно обратиться к наполнению второй формы?
В смысле не к textBox'у а вообще к любому элементу?

Код

public class Form1 : System.Windows.Forms.Form
{
    private System.Windows.Forms.MainMenu mainMenu1;
    private System.Windows.Forms.MenuItem menuItem7;
    Form2 f2;

    public Form1()
    {
        InitializeComponent();
        f2 = new Form2(this);
    }

    private void menuItem7_Click(object sender, System.EventArgs e)
    {
        f2.textBox1.Text=""; //ошибка
        f2.ShowDialog();
    }
}



Код

public class Form2 : System.Windows.Forms.Form
{
    private System.Windows.Forms.TextBox textBox1;
    Form1 f1;

    public Form2(Form1 form)
    {
        InitializeComponent();
        this.f1=form;
    }
}

На обеих формах стер все, что посчитал лишним. Может переусердствовал?
PM MAIL ICQ   Вверх
reloni
Дата 8.1.2007, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.5.2006
Где: Москва

Репутация: нет
Всего: 4



Это сообщение означает, что текстбокс на второй форме объявлен как protected или private, поэтому ты и не можешь но него добраться (инкапсуляцияsmile). Есть два пути: 
Или поставить текстбоксу public и тогда можно с ним делать все что душе угодно (в том числе и будет работать код выше).
Или в форме номер два сделать специальное свойство:
Код

        public string TextInTextBox
        {
            set { this.textBox1.Text = value; }
            get { return this.textBox1.Text; }
        }


И тогда можно будет устанавливать значение уже через него:
Код

    private void menuItem7_Click(object sender, System.EventArgs e)
    {
        f2.TextInTextBox=""; //теперь ошибки нет
        f2.ShowDialog();
    }

PM MAIL ICQ   Вверх
McSlash
Дата 8.1.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.1.2007
Где: Мурманск

Репутация: нет
Всего: нет



Спасибо!  smile Сам думал работать через процедуру, но пока не успел, да и решение вырисовывалось кривенькое...
А public - это, по моему, не серьезно. Не зря же private автоматом прописывается. Вроде как для защиты программы от внешнего управления в скомпилированной программе... Это только предположение естесвенно smile
PM MAIL ICQ   Вверх
Berserk
Дата 18.1.2007, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 14.12.2006
Где: Столица Донбасса - Горловка

Репутация: нет
Всего: 2



Есть вторая форма на которой расположен прогрессбар. Есть бекгроундворкер. Для второй формы я создаю
Код
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 

Как мне вызывать его из первой формы в 
Код
private void buttonOK_Click(object sender, EventArgs e)




 
--------------------
  
PM MAIL ICQ   Вверх
mr.DUDA
Дата 18.1.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Сделать его пабликом (в окне Properties в дизайнере), тогда если есть ссылка на форму, можно будет обратиться просто через точку.


--------------------
user posted image
PM MAIL WWW   Вверх
Evgenik
Дата 27.2.2007, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 27.2.2007

Репутация: нет
Всего: нет



 Профи С#.NET помогите реализовать простую задачу. Необходимо, чтоб при закрытии формы выдавалсь сообщении, подтверждающее выход. Тобишь сообщении с двумя кнопками (ОК,Cancel). Соответственно при нажатии ОК- выход, Cancel - всё возвратилось на круги своя...
 Извините если не туда запостил.
PM MAIL   Вверх
mr.DUDA
Дата 27.2.2007, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Evgenik, вынеси в отдельную тему в раздел "Разработка Windows Forms", там и отвечу  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 27.2.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Цитата(Evgenik @  27.2.2007,  04:58 Найти цитируемый пост)
 Извините если не туда запостил. 

Не туда  smile 

Сходи сюда
Что будет непонятно, там и отписывайся smile
PM MAIL WWW ICQ   Вверх
Evgenik
Дата 28.2.2007, 05:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 27.2.2007

Репутация: нет
Всего: нет



     Спасибо, разобрался... smile 

P.S. Спасибо, что просто не послали восвояси smile 
PM MAIL   Вверх
Legolas
Дата 23.4.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: 3
Всего: 5



Скажите, плз. Как заставить при активация одной формы предыдущую закрываться? 
PM MAIL   Вверх
ivashkanet
Дата 23.4.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 3
Всего: 149



Legolas, ИМХО, тут без внешнего менеджера форм не обойтись.
PM MAIL WWW ICQ   Вверх
Legolas
Дата 23.4.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: 3
Всего: 5



Поподробнее пожалуйста.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0945 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.