Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 18.01.2016
Сообщений: 220

Передать текст в static

20.08.2017, 21:40. Показов 721. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите пожалуйста как передать текст в static строку?
C#
1
public static string str = textBox1.Text;
так возникает ошибка
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.08.2017, 21:40
Ответы с готовыми решениями:

Изменить текст в textBox из static метода
Всем здрасте , есть класс называется Worcking , там есть что-то подобное private static void LOL() { Form1.textbox1.text =...

Как передать текст (текстовый файл или текст в программе) через запущенный VS с одного компа на другой?
Как передать текст (сохраненный через VS автоматически текстовый файл или сам некоторый текст в программе) через запущенный VS с одного...

Передать текст! Интерфейс
Помогите исправить ошибку в коде. Нужно передать текст из текст бокс в лабел через интерфейс... using System; using...

10
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
21.08.2017, 04:07
frank2, создай статическое свойство. В него можно будет передавать.
C#
1
2
3
4
public static string str { get; set; }
...
...
str = textBox1.Text;
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
21.08.2017, 09:19
frank2, ошибка возникает потому что textBox1 экземплярное поле для доступа к которому нужен - сюрприз! - экземпляр класса которому он принадлежит. Не говоря уже о что инициализация static поля будет выполняться еще до того как будет создан хоть один экземпляр этого класса. Непонятно зачем тебе понадобилось имено static поле, но чтобы исправить ошибку нужно перенести инициализацию в то место кода где можно обращаться к textBox1.

Цитата Сообщение от Shogun31337 Посмотреть сообщение
создай статическое свойство.
Обязательно нужно свойство? У них какая-то особая магия по сравнению с полем?
0
0 / 0 / 2
Регистрация: 18.01.2016
Сообщений: 220
21.08.2017, 13:59  [ТС]
Shogun31337, я так делал, но увы не работает. Моя статик строка это строка подключения к бд(а точнее путь до самой бд).
C#
1
2
public static string path = @"C:\Program Files (x86)\MyProgramm\DATA.mdb";
public static string conBD = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Jet OLEDB:Database Password="pass22"";
Так все работает, но мне надо path заполнять из текстбокса.
При старте программы в текстбоксе уже указан путь(он может отличаться если пользователь укажет другой).
сделал так

C#
1
2
3
4
5
6
private void btnCreate_Click(object sender, EventArgs e)
        {
            path = txtDataPath.Text;
           //работа с базой и тд
}
public static string path { get; set; }
Но так вываливается исключение как на скрине. Как быть?
Миниатюры
Передать текст в static  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
21.08.2017, 15:06
frank2, исключение не связано напрямую с static полем. Похоже ты забыл что изменение поля path не изменит значение поля conBD. Его лучше сделать свойством
C#
1
2
3
4
public static string conBD
{
    get { return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Jet OLEDB:Database Password=\"pass22\""; }
}
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
21.08.2017, 16:44
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Обязательно нужно свойство? У них какая-то особая магия по сравнению с полем?
По правде говоря, до вчерашнего дня даже не задумывался над этим вопросом... Поэтому, не могу ответить обязательно ли нужно свойство и какая там особая магия. Так работает, потому и предложил этот вариант. А есть какие то проблемы со статическим свойством?
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
21.08.2017, 16:55
Shogun31337, проблем со static свойствами нет. Речь только о том что в контексте вопроса заданного ТСом нет разницы между static полем и static свойством. Проблема была в попытке доступа к экземплярному члену. В этом основная суть. Поэтому меня и удивило предложение использовать свойство.
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
21.08.2017, 17:12
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Проблема была в попытке доступа к экземплярному члену. В этом основная суть.
Смысл проблемы то я понимаю. Мне не очень понятен Ваш способ решения проблемы. То что к TextBox'у нужно обращаться только после того как будет создан экземпляр формы тоже понятно. Но ведь, фактически до создания экземпляра можно обратиться только в конструкторе перед инициализацией компонентов, а все остальные места кода уже должны содержать экземпляр и, соответственно, ошибки возникать не должно. Но ведь она возникает... Или я что то не так понимаю?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
21.08.2017, 18:46
Shogun31337, в коде объявляется static поле с инициализацией. Код инициализации полей компилятор переносит в конструктор. В данном случае разумеется в static конструктор, который, как говорит спецификация, выполняется до первого использования типа. Никаких экземпляров класса в этот момент в принципе быть не может. Отсюда и ошибка. И мне казалось что ты это уже знаешь раз разделил объявление и инициализацию.
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
21.08.2017, 20:20
OwenGlendower, да, конечно, это я знаю. Но проблема то в том, что даже если разделить объявление статического поля и его инициализацию, разместив его, например, в обработчике нажатия кнопки, ошибка все равно не исчезает. Хотя, по идее, в этот момент экземпляр уже должен быть создан. Иначе откуда бы взяться кнопке и ее обработчику? А вот со свойством все нормально работает. Вчера, перед тем как написать ответ, проверял оба варианта. Почему так происходит, для меня загадка.

Добавлено через 21 минуту
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Вчера, перед тем как написать ответ, проверял оба варианта. Почему так происходит, для меня загадка.
OwenGlendower, наврал!!! Действительно, и с обычным полем все работает. Видимо, вчера чего то намудрил в полусонном состоянии.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
21.08.2017, 20:22
Shogun31337,
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.08.2017, 20:22
Помогаю со студенческими работами здесь

Передать текст из TextBox в DataGridView
Народ нужна ваша помощь.Как передать данные из Текст бокса в Датагридвью так что бы пользователь вводил данные в текст бокс и они...

Передать текст из TextBox в ListBox
box_messages.Items.Add(client.Name + " >> " + client.Reader.ReadString()); box_messagess.Items.Add(client.Name + " >> " +...

Передать текст из класса форме
Почему не могу передать текст из класса форме? SI - название одной из форм. SI SSI = new SI(); SSI.textBox1.Text =...

Передать текст на другую форму
Всем привет, не получается передать значение listbox с главной формы на 2 форму в textbox т.е. вывести значение в textbox. И так же...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru