Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/56: Рейтинг темы: голосов - 56, средняя оценка - 4.88
 Аватар для andalit
9 / 11 / 3
Регистрация: 21.11.2009
Сообщений: 56

Как изменить содержимое TextBox на WinForm из program.cs?

20.10.2010, 22:07. Показов 10705. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, прошу знатоков помочь, как изменить содержимое TextBox.Text на WinForm из program.cs

есть мнение что нужно использовать delegate & invoke, как конкретно ?

если бы сделать этот TextBox public static - решило бы проблему, но такие свойства в конструктор не запихнуть , так что надо как то после неких действий в теле програме изменить содержимое злосчастного текстового поля.


паралельный вопрос "Как прочитать Form1.TextBox.text\ComboBox.Text из Program.cs" ?
может дето както свойства выставить ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2010, 22:07
Ответы с готовыми решениями:

есть заполненная таблица в базе данных и textBox, как изменить данные таблицы данными из textBox??
есть заполненная таблица в базе данных и textBox, как изменить данные таблицы данными из textBox? начал так: private void...

Запускается FactoryMethod.Program вместо AbstractFactory.Program - как исправить?
Запускается FactoryMethod.Program вместо AbstractFactory.Program - как исправить?

WinForm C++ Сохранение файла по введенной директории в TextBox
Друзья, у меня есть текстбоксик в котором отображается путь в нужную директорию. Нужно чтобы при нажатии на кнопку файл сохранялся в...

14
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
20.10.2010, 22:49
andalit, в стандартном варианте выглядит так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
и когда Form1 будет закрыта, приложение закончит свое выполнение. Какие ты после этого хочешь еще свойства?
Если утебя не так, покажи свой код и в каком месте ты хочешь видеть свойства.
0
 Аватар для andalit
9 / 11 / 3
Регистрация: 21.11.2009
Сообщений: 56
20.10.2010, 23:09  [ТС]
запустилась форма, смысл в textBox1 ввести 1 число,
в textBox2 - 2e, а в TextBox3 - вывести результат умножения, допустим.
НО умножение выполнять не в Form1.cs а в Program.cs, у меня другой код, но суть эта.


C#
1
2
3
4
5
6
7
8
        
       delegate void Del(string text);
       public  void SetTextSafe(string newText)
        {
            statusbox.Invoke(new Del((s) => statusbox.Text = s), newText);
        }
использование
           // SetTextSafe("Новый текст");
так вот можно поправить текст в statusbox (TextBox), но только из Form1.cs, нужно методу SetTextSafe сделать свойство static, что бы можно было и из Program.cs его юзать, но увы так не выходит...

ах да, на VPF работает следующий код, но на С# ругается на левый клас в Form1.cs + пространисва имен System.Windows.Drawyngs; нету

C#
1
2
3
4
5
6
7
8
9
10
11
    static class Ex
    {
       delegate void UpdateTheText(string newText);
        public static void SetText(this Label money, string text)
        {
            money.Dispatcher.Invoke(DispatcherPriority.Normal,
                                 new UpdateTheText(x => { money.Content = x; }),
                                 text);
        }
        
    }
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
20.10.2010, 23:20
andalit, ты на WinForms делаешь или WPF? для WPF отдельная ветка https://www.cyberforum.ru/wpf-silverlight/
0
 Аватар для andalit
9 / 11 / 3
Регистрация: 21.11.2009
Сообщений: 56
20.10.2010, 23:34  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
andalit, ты на WinForms делаешь или WPF? для WPF отдельная ветка https://www.cyberforum.ru/wpf-silverlight/
на С#, поэтому в эту ветку и пишу.
мне нужно на С# WinForm.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
20.10.2010, 23:47
andalit, покажи свой метод Main (или весь класс Program) с указанием коментариями, где следует производить подсчеты и передачу данных
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
21.10.2010, 00:00
andalit,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        public String formLabel1text
        {
            get
            {
                return label1.Text;
            }
            set
            {
                label1.Text = value;
            }
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1() { formLabel1text="hello!" });
        }
    }
Добавлено через 1 минуту
Цитата Сообщение от andalit Посмотреть сообщение
паралельный вопрос "Как прочитать Form1.TextBox.text\ComboBox.Text из Program.cs" ?
может дето както свойства выставить ?
вот вам сразу и ответ на этот вопрос тоже
1
 Аватар для andalit
9 / 11 / 3
Регистрация: 21.11.2009
Сообщений: 56
21.10.2010, 00:24  [ТС]
че то я не совсем понял как его использовать.
привожу пример ВинФорм 3 текстовых поля и 1на кнопка

Form1.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Program.call();
        }
    }
}
Рrogram.cs
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
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());           
        }
        public static void call()
        {
            int a = Convert.ToInt32(Form1.textBox1.Text);
            int b = Convert.ToInt32(Form1.textBox2.Text);
            Form1.textBox3.Text = (a*b).ToString();
        }
    }
}
как заставить взять данные из виндовсформы и отправить уже в загруженое приложение ?
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
21.10.2010, 01:48
andalit, не ну как всегда - все на пальцах, все на пальцах...
Используя обьявление свойств контролов формы как свойств класа формы:
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
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        
        public String formTB1text
        {
            get
            {
                return this.textBox1.Text;
            }
        }
 
        public String formTB2text
        {
            get
            {
                return this.textBox2.Text;
            }
        }
 
        public String formTB3text
        {
            get
            {
                return this.textBox3.Text;
            }
            set
            {
                this.textBox3.Text = value;
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Program.call();
        }
    }
и используя статику Program.cs дописываем

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(created=new Form1() );
        }
 
        static Form1 created;
 
        public static void call()
        {
            int a = Convert.ToInt32(created.formTB1text);
            int b = Convert.ToInt32(created.formTB2text);
            created.formTB3text = (a * b).ToString();
        }
    }
2
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
21.10.2010, 08:21
andalit, а зачем через ж. делать, обычно это делается сразу на форме
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            textBox3.Text = (Convert.ToInt32(textBox1.Text) + Convert.ToInt32(textBox2.Text)).ToString();
        }
    }
}
Класс Program в WinForms (в отличии от консольных приложений) как правило используется для того что бы запустить первую форму (ну и принять аргументы иногда)

Ну а коли уж совсем невтерпеж метод подсчета в Program вынести, то зачем усложнять. Методы могут принимать и возвращать значения (!).

Form1.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            textBox3.Text=Program.call(textBox1.Text, textBox2.Text);
        }
    }
}

Рrogram.cs
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
     
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());           
        }
        public static string call(string a, string b)
        {
                return (Convert.ToInt32(a) + Convert.ToInt32(b)).ToString();
        }
    }
}
1
 Аватар для andalit
9 / 11 / 3
Регистрация: 21.11.2009
Сообщений: 56
21.10.2010, 12:32  [ТС]
нужно именно в Program.cs
сенк, Alligieri помогло, а как это сделать с помошью делегатов ? или ими такое сделать нельзя ?

Добавлено через 43 минуты
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "statusbox" не из того потока, в котором он был создан.

на моем коде не работает ((
надо как то delegate & Invoke использовать
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
21.10.2010, 14:18
Цитата Сообщение от andalit Посмотреть сообщение
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "statusbox" не из того потока, в котором он был создан.
statusbox создается програмно или пытаетесь достучатся не до Form1? хотя не должно даже так матюгатся - ведь доступ то с основного потока который передан с Form1... про делегаты надо вспомнить, но алгоритм похожий. А тело метода может содержатся в Form1, но инвокатся из Program.cs по условиям задания?
0
 Аватар для andalit
9 / 11 / 3
Регистрация: 21.11.2009
Сообщений: 56
21.10.2010, 17:36  [ТС]
Цитата Сообщение от Alligieri Посмотреть сообщение
statusbox создается програмно или пытаетесь достучатся не до Form1? хотя не должно даже так матюгатся - ведь доступ то с основного потока который передан с Form1... про делегаты надо вспомнить, но алгоритм похожий. А тело метода может содержатся в Form1, но инвокатся из Program.cs по условиям задания?
statusbox создан не кодом а элементом текстбокс перетянутым на поле.
увы, в Form1 нельзя этого делать так как в Program.cs крутится бесконеченый цикл в другом потоке, с уймой проверок в других класах, если случиться определенное действие - тогда на statusbox отобразиться нужный текст.
я привел пример на впф де все раьотает аналогичным методом, можно ли этот метод на шарп как то переделать ?
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
21.10.2010, 21:28
Цитата Сообщение от andalit Посмотреть сообщение
бесконеченый цикл в другом потоке
вот с этого и надо было начинать
0
 Аватар для andalit
9 / 11 / 3
Регистрация: 21.11.2009
Сообщений: 56
21.10.2010, 22:03  [ТС]
с делигатами разобрался, вроде, как сделать так что бы я в Program.cs написал

C#
1
Form1.SetTextSafe("Новый текст");
а в Form1.cs принял и обработал его, проблема осталась только в том что нужно указать public static void SetTextSaf, как использовать не статический метод с другого класса ?
C#
1
2
3
4
        public  void SetTextSafe(string newText)
        {
            Invoke(new Del(s => statusbox.Text = s), newText);
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2010, 22:03
Помогаю со студенческими работами здесь

Как вывести содержимое в TextBox?
Visual Studio 2010, Visual C++. Имеется такой код для вычисления хэша SHA-1 #define UNICODE #include &lt;stdio.h&gt; #include...

Как отправить содержимое TextBox по почте?
как бы мне сделать , вот у меня 3 техтбокса и 1 ричьтехтбокс , мне нужно всё что пишут в течбоксе и ричьтекстбоксе приходило мне на почту

Как перенести содержимое textBox в listBox?
Здравствуйте! Нужно перенести все строки из textBox'а в listBox. Если делать так: listBox1.Items.Add(textBox1.Text); То...

Как распечатать содержимое нескольких TextBox'ов?
Извините , ошибка в тексте :так правильно ! Есть несколько текст-боксов (Text1;Text2;Text3;Text4).Какой необходимо написать код ,...

Как передать в TextBox содержимое поля класса ?
И можете объяснить как взаимодействует форма с другим классом? Как в методе обычного класса обратится к объектам формы?


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru