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

Как из собственно-созданного класса, изменить свойство компонента Формы (textbox)

10.10.2015, 14:00. Показов 3839. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую)
Итак, на форме есть comboBox1 и TextBox1, нужно чтобы при выборе в выпадающем окне comboBox1, запустился метод Класса который я создал, ну и надо записать в TextBox1 что-либо Именно с помощью это класса (без собственного класса сделать это все просто, но задание с использованием собственного класса). Я их вроде как связал, что бы были друг другу видны класс и компоненты формы, но запись в TextBox1 почему то не идет, MessageBox там для проверки доходит ли программа до туда или нет( и он вылетает когда надо, то есть программа до туда проходит спокойно, но в тбох не записывает).
"Visual Studio 2013 используется"

P.s некоторые моменты могут быть странными, "типо зачем он это считывает", но это я лишь часть проги скинул момента который не получается, что бы лишний текст не мешал...

P.s.s Я читал другие подобные темы, что тут есть но мне как то казалось там либо что то не по моей идеи немного, либо словами объяснения - код как то понятнее), Также Ответы на 7 самых частых вопроса по WinForms(связь двух форм и класса) , это просмотрел тоже, но как то тяжеловато для новичка связь эта форм и класса, да и по-моему немного не то(

Поэтому надеюсь на вашу помощь))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Lab
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
        St st = new St(24);
 
        public void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
        {
            st.MS(comboBox1.SelectedIndex);
        }
 
        public class St
        {
            Form3 form3;
            public St(int time)
            {
                int t = time;
            }
            public void MS(int time)
            {
                form3 = new Form3();
                form3.textBox1.Text = "Привет!";
                MessageBox.Show(Convert.ToString(time));
            }
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2015, 14:00
Ответы с готовыми решениями:

Из класса изменить свойство компонента на форме
Доброго времени суток! Помогите разобраться пожалуйста. У меня есть на форме компонент. В данном...

Как заставить свойство "Text" компонента Label забиндиться на свойство TheChar из пользовательского класса
Здравствуйте, не получается заставить свойство "Text" компонента Label забиндиться на свойство...

Свойство созданного визуального компонента не активно на панели свойств
Проблема в следующем: Кидая компонент ListBoxExx на форму, я могу видеть у него свойство S в...

Как обратиться к textbox из созданного класса
В общем вопрос, как обратиться к textbox с созданного класса, то есть у меня есть какой-то class.cs...

6
57 / 57 / 20
Регистрация: 04.07.2013
Сообщений: 524
10.10.2015, 14:14 2
Ваша проблема в том, что вы в своём классе создаёте новый экземпляр Form3. А вам надо переопределить конструктор вашего класса, таким образом, чтобы он принимал объект Form3, что то вроде этого:
C#
1
2
3
4
5
6
7
8
public MyClass
{
    Form3 form3;
    public MyClass(Form3 form3)
    {
        this.form3 = form3;
    }
}
А когда создаёте объект своего класса, то надо писать:
C#
1
MyClass my = new MyClass(this);//при условии что вы будете создавать его в пределах класса Form3
0
0 / 0 / 1
Регистрация: 10.10.2015
Сообщений: 19
10.10.2015, 16:57  [ТС] 3
Ну мой класс изменения принял спокойно)
А вот при создании объекта класса, this почему то не нравится.

Ваша проблема в том, что вы в своём классе создаёте новый экземпляр Form3.
А это я так понимаю, как бы создавал для класса свою форму что ли (но ее как бы не видно и нету), примерно так получается
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
 
        St st = new St(this);  //Тут ошибка
 
        private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
        {
            st.MS(comboBox1.SelectedIndex);
        }
        public class St
        {
            Form3 form3;
            public St(Form3 form3)
            {
                this.form3 = form3;
            }
            public void MS(int time)
            {
                form3 = new Form3();
                form3.textBox1.Text = "Привет!";
                MessageBox.Show(Convert.ToString(time));
            }
        }
    }
}
0
Администратор
Эксперт .NET
9615 / 4757 / 761
Регистрация: 17.04.2012
Сообщений: 9,610
Записей в блоге: 14
10.10.2015, 17:00 4
Цитата Сообщение от KuroRyuu Посмотреть сообщение
C#
20
St st = new St(this); //Тут ошибка
Эта строка должна находиться внутри какого-нибудь метода. Такие вызовы вне методов недопустимы.
0
0 / 0 / 1
Регистрация: 10.10.2015
Сообщений: 19
10.10.2015, 17:06  [ТС] 5
А все перенес в класс public Form3() создание класса st = new St(this); , программа снова запускается, но также ничего не пишет в textboxe
П.с не успел отредактить(
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form3 : Form
    {
        St st;
        public Form3()
        { 
            st = new St(this); 
            InitializeComponent();
        }
 
       
 
        private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
        {
            st.MS(comboBox1.SelectedIndex);
        }
        public class St
        {
            Form3 form3;
            public St(Form3 form3)
            {
                this.form3 = form3;
            }
            public void MS(int time)
            {
                form3 = new Form3();
                form3.textBox1.Text = "Привет!";
                MessageBox.Show(Convert.ToString(time));
            }
        }
    }
}
0
57 / 57 / 20
Регистрация: 04.07.2013
Сообщений: 524
10.10.2015, 17:16 6
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Цитата Сообщение от KuroRyuu Посмотреть сообщение
form3 = new Form3();
Эта строка создаёт новый экземпляр вашей формы (не тот, что вы видите на экране). Вам вообще не нужна эта строка, уберите её. Вы же передали форму в конструкторе.

Добавлено через 3 минуты
Ради эксперимента, можете в конце метода MS() дописать form3.Show(), и посмотрите что получится.
0
0 / 0 / 1
Регистрация: 10.10.2015
Сообщений: 19
10.10.2015, 18:17  [ТС] 7
Цитата Сообщение от KrekerOK Посмотреть сообщение
Эта строка создаёт новый экземпляр вашей формы (не тот, что вы видите на экране). Вам вообще не нужна эта строка, уберите её. Вы же передали форму в конструкторе.

Добавлено через 3 минуты
Ради эксперимента, можете в конце метода MS() дописать form3.Show(), и посмотрите что получится.
Ооо, дописал form3.Show(), и забавно получается создает каждый раз по одной форме с этим привет!))
А вот строчку я чего то не удалил, похоже просто не заметил ее

Ну что же, большое спасибо вам за помощь, теперь все работает как часики)
0
10.10.2015, 18:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2015, 18:17
Помогаю со студенческими работами здесь

Как изменить свойство компонента, не вызывая связаный Event?
А если конкретно - как установить для ItemMenu значение Checked, не вызвав при этом CheckedChanged?

Как из метода созданного класса вызывать методы WindowsForms (наприме вывод текста в TextBox)
Помогите пожалуйста! Я изучаю С# и надеюсь на вашу помощь... В общем создаю класс в методах этого...

Изменить свойство компонента другой формы
При нажатии кнопки в form1 данные из txtbox должны присвоиться Label в form2 Как реализовать?

Изменить свойство элемента формы из метода произвольного класса
Добрый вечер, эта тема не раз уже поднималась, но я, убив целый день, так и не смог понять, как...


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

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