Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 13
1

Редактироваь объекты на другой форме

25.06.2013, 19:19. Показов 1087. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста. Нужно сделать так чтобы при нажатии кнопки на одной форме редактировались обьекты на другой:

private void button1_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
this.Close();
Form1 f1 = new Form1();
f1.comboBox1.Text = "";
f1.textBox8.Text = "";
f1.textBox9.Clear();
f1.textBox2.Clear();
f1.checkBox1.Checked = false;
}

Так не получается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2013, 19:19
Ответы с готовыми решениями:

Редактировать объекты на другой форме
Помогите пожалуйста. Нужно сделать так чтобы при нажатии кнопки на одной форме редактировались...

Динамические объекты на другой форме
Здравствуйте! Задача легкая но почемуто не получаетса...Помогите пожалуйста. В опщем есть две...

Нажав кнопку на одной форме поменять свойство другой кнопки на другой форме
Здравствуйте. Только начал изучать QT и вот возник вопрос практической направленности. Нужно: нажав...

Одна кнопка на одной форме, активирует другую на другой форме
Нажатием на кнопку активирует другую кнопку на другой форме не совсем понимаю

12
28 / 23 / 8
Регистрация: 25.10.2009
Сообщений: 259
26.06.2013, 13:26 2
Объясните первые 2 строчки. Что за Form3 и зачем this.Close()?
Далее, так естественно ничего не получится.
Вариантов мне видится 2, один простой, но не хороший, второй чутка сложнее, но лучше.
1 вариант: нужно все члены второй формы, которые Вы хотите редактировать, сделать Public тогда Ваш код заработает без каких либо изменений. Это самый простой вариант, но не самый лучший с точки зрения принципов ООП.
2 вариант: написать на второй форме публичные методы для редактирования объектов на ней. Можно для каждого объекта написать свой метод или даже набор методов, а можно заморочиться и написать один общий.
Мне кажется есть варианты и по лучше, но я пока ещё волшебник, я только учусь

Добавлено через 15 минут
*не волшебник
Только сейчас заметил, Вы же создаёте экземпляр формы, т.е. речь не совсем о редактировании объектов на второй форме, скорее об инициализации. В таком случае, лучше сделать это через конструктор второй формы.
В любом случае советую ознакомиться с темой: Ответы на 7 самых частых вопросов по WinForms
0
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 27
26.06.2013, 14:03 3
и кое-что ещё, у объектов на форме, к которой нужен доступ, меняйте свойство Modifers на public
0
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 13
26.06.2013, 17:36  [ТС] 4
Цитата Сообщение от Predatore Посмотреть сообщение
Объясните первые 2 строчки. Что за Form3 и зачем this.Close()?
Далее, так естественно ничего не получится.
Вариантов мне видится 2, один простой, но не хороший, второй чутка сложнее, но лучше.
1 вариант: нужно все члены второй формы, которые Вы хотите редактировать, сделать Public тогда Ваш код заработает без каких либо изменений. Это самый простой вариант, но не самый лучший с точки зрения принципов ООП.
2 вариант: написать на второй форме публичные методы для редактирования объектов на ней. Можно для каждого объекта написать свой метод или даже набор методов, а можно заморочиться и написать один общий.
Мне кажется есть варианты и по лучше, но я пока ещё волшебник, я только учусь

Добавлено через 15 минут
*не волшебник
Только сейчас заметил, Вы же создаёте экземпляр формы, т.е. речь не совсем о редактировании объектов на второй форме, скорее об инициализации. В таком случае, лучше сделать это через конструктор второй формы.
В любом случае советую ознакомиться с темой: Ответы на 7 самых частых вопросов по WinForms
this.Close нужен для того, чтобы закрыть текущую форму.
Объекты у меня public, естественно. Это меня и смущает.
Что касаемо второго варианта: я попробовал создать метод в первой форме:
public void clearity()
{
comboBox1.Text = "";
textBox8.Text = "";
textBox9.Clear();
textBox2.Clear();
checkBox1.Checked = false;
}
А во второй:
private void button1_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
this.Close();
Form1 f1 = new Form1();
f1.clearity();
}
Все равно не помогает. Я в тупике.
0
28 / 23 / 8
Регистрация: 25.10.2009
Сообщений: 259
26.06.2013, 17:56 5
Так что же всё-таки такое Form3? И всё таки меня немного смущает закрытие текущей формы. По крайней мере попробуйте закрывать её после изменений, а не до.

Добавлено через 4 минуты
И ещё один момент меня смущает, Вы как проверяете, что объекты на форме Form1 не изменились? Что-то мне подсказывает, что именно здесь и прячется проблема.
0
54 / 54 / 10
Регистрация: 28.06.2012
Сообщений: 224
26.06.2013, 19:22 6
Цитата Сообщение от GM-JD Посмотреть сообщение
Form3 f3 = new Form3();
this.Close();
Form1 f1 = new Form1();
f1.clearity();
После
C#
1
this.Close();
у вас ничего не будет выполняться.
0
4 / 4 / 0
Регистрация: 17.06.2013
Сообщений: 19
26.06.2013, 19:56 7
подождите, непонятно во-первых объектом какой формы является button1. Понятно, что после
C#
1
this.Close();
закроется родная форма и дальнейший код не выполнится.

Могу посоветовать перенести эту строку в конец функции.

C#
1
2
3
4
5
6
7
8
9
10
11
private void button1_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3(); 
Form1 f1 = new Form1(); 
f1.comboBox1.Text = "";
f1.textBox8.Text = "";
f1.textBox9.Clear();
f1.textBox2.Clear();
f1.checkBox1.Checked = false;
this.Close(); 
}
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
27.06.2013, 11:50 8
@GM-JD, ответ на Ваш вопрос есть в разделе "Ответы на 7 самых частых вопросов по WinForms" Пункт №2
0
154 / 153 / 29
Регистрация: 21.05.2010
Сообщений: 338
27.06.2013, 13:39 9
@GM-JD,
C#
1
Form1 f1 = new Form1();
создаёт новый экземпляр класса Form1. Т.е., на уже существующей форме Form1 элементы изменены не будут. Будет создана новая форма Form1 и на ней произведены изменения контроллов.
0
154 / 153 / 29
Регистрация: 21.05.2010
Сообщений: 338
27.06.2013, 13:46 10
@GM-JD, как-то так: ChangeFormControls.rar
0
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 13
27.06.2013, 21:29  [ТС] 11
Цитата Сообщение от Predatore Посмотреть сообщение
Так что же всё-таки такое Form3? И всё таки меня немного смущает закрытие текущей формы. По крайней мере попробуйте закрывать её после изменений, а не до.

Добавлено через 4 минуты
И ещё один момент меня смущает, Вы как проверяете, что объекты на форме Form1 не изменились? Что-то мне подсказывает, что именно здесь и прячется проблема.
Я пытаюсь сделать окно подтверждения удаления. На первой форме есть объекты, которые заполняются данными. Эти данные при желании можно удалить, нажатием кнопки. После нажатия кнопки выходит окошко (Form3) "Вы действительно хотите удалить введенные данные?". Нажимаем на "ОК" и тут окошко должно закрыться, а объекты на первой форме очиститься.
У меня окошко закрывается, а данные на первой форме остаются.

Добавлено через 2 минуты
Цитата Сообщение от treyk Посмотреть сообщение
После
C#
1
this.Close();
у вас ничего не будет выполняться.
Ну я пробовал закрывать Form3 в последнюю очередь:
C#
1
2
3
4
5
6
7
8
9
10
11
private void button1_Click(object sender, EventArgs e)
        {            
            Form3 f3 = new Form3(); 
            Form1 f1 = new Form1();                              
            f1.comboBox1.Text = "";
            f1.textBox8.Text = "";
            f1.textBox9.Clear();
            f1.textBox2.Clear();
            f1.checkBox1.Checked = false;                 
            this.Close();        
        }
Эффект тот же.

Добавлено через 4 минуты
Цитата Сообщение от Smems Посмотреть сообщение
@GM-JD,
C#
1
Form1 f1 = new Form1();
создаёт новый экземпляр класса Form1. Т.е., на уже существующей форме Form1 элементы изменены не будут. Будет создана новая форма Form1 и на ней произведены изменения контроллов.
Я попробовал так:
C#
1
2
3
4
5
private void button1_Click(object sender, EventArgs e)
        {         
            Program.f1.clearity();           
            this.Close();        
        }
Эффект тот же
0
54 / 54 / 10
Регистрация: 28.06.2012
Сообщений: 224
27.06.2013, 21:59 12
@GM-JD, попробуйте сделать ваш метод статическим, и вызывать его в случае подтверждения как
C#
1
Form1.clearity();
А вообще для вашей задачи есть более простое решение, не требующее создания дополнительной формы.
0
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 13
29.06.2013, 17:41  [ТС] 13
Цитата Сообщение от treyk Посмотреть сообщение
@GM-JD, попробуйте сделать ваш метод статическим, и вызывать его в случае подтверждения как
C#
1
Form1.clearity();
А вообще для вашей задачи есть более простое решение, не требующее создания дополнительной формы.
спасибо всем за помощь. Реализовал это с помощью MessageBox. С формой так и не получилось.
0
29.06.2013, 17:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2013, 17:41
Помогаю со студенческими работами здесь

Добавление текста из TextBox на одной форме в ComboBox на другой форме
Добрый вечер. У меня небольшая проблема. Я сделал кнопку "Настройки" что бы открывался User Form...

Поле со списком в одной форме преобразовать в переключатель в другой форме
Добрый вечер! Можно ли реализовать в форме 1 есть данные поле со списком , а необходимо в другой...

Использование переменных, объявленных в одной форме, в другой форме
Возможно ли где-нибудь или как-нибудь объявить переменные, которые можно использовать на всех...

Объекты не рисуются на форме
Есть такой код private void Form1_Paint(object sender, PaintEventArgs e) { ...

Не отображаются объекты на форме
На форме не отображаются добавленные объекты. Сама форма тоже работает неправильно (скрин...

Кнопка в форме и объекты
В общем, ситуация такова... Имеется форма, которая использует 4 объекта разных классов, никак друг...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru