Windows forms textbox запрет на ввод
В Form1 я могу установить текст, набрав:
Теперь я создал другой класс. Как я могу назвать textBox1 в этом классе? поэтому я хочу изменить текст для textBox1 в этом классе.
Как я могу получить доступ к Form1 из этого нового класса?
ОТВЕТЫ
Ответ 1
Я бы рекомендовал, чтобы вы этого не сделали. Вы действительно хотите иметь класс, который зависит от того, как редактирование текста реализовано в форме, или вы хотите создать механизм, позволяющий вам получить и установить текст?
Я бы предложил последнее. Итак, в вашей форме создайте свойство, которое обертывает свойство Text элемента управления TextBox :
Затем создайте некоторый механизм, через который ваш класс может получить ссылку на форму (например, через contructor). Затем этот класс может использовать свойство для доступа и изменения текста:
Еще лучше было бы определить возможные взаимодействия в интерфейсе, и пусть этот интерфейс будет заключаться между вашей формой и другим классом. Таким образом, класс полностью отделен от формы и может использовать anyting, реализующий интерфейс (который открывает дверь для более легкого тестирования):
В вашем классе формы:
Ответ 2
Ответ 3
Вы можете изменить модификатор доступа для сгенерированного поля в Form1.Designer.cs от private до public . Измените это
Теперь вы можете обрабатывать его, используя ссылку формы Form1.textBox1 .
Visual Studio не перезапишет это, если вы внесете какие-либо изменения в свойства элемента управления, если вы не удалите его и не заново создадите.
Вы также можете перенести его с пользовательского интерфейса, если вы не можете с комфортом редактировать код. Найдите свойство Модификаторы:
Ответ 4
Вам нужно будет иметь доступ к экземпляру формы для доступа к его коллекции Controls и тем самым изменить текст Text Box's .
Одним из способов может быть то, что вы можете иметь экземпляр своей формы, доступный как открытый или более лучший. Создайте новый конструктор. Для вашей второй формы и получите экземпляр Form1 во время инициализации.
Ответ 5
Определите свойство формы, например, затем используйте это в других местах, где оно будет доступно с экземпляром формы
Ответ 6
Я нашел простой способ сделать это, я его протестировал, он работает правильно. Сначала я создал проект Windows, в форме я вставил TextBox, и я назвал его textBox1 затем я вставил кнопку с именем button1, а затем добавлю класс с именем class1. в классе1 я создал TextBox:
Теперь в вашей форме Сделайте это:
в button1_Click Я скопировал объект textBox1 в txt1, так что теперь txt1 обладает свойствами textBox1 и u могут изменять текст TextBox1 в другой форме или классе.
Ответ 7
Я попробовал приведенные выше примеры, но никто не работал, как описано. Однако у меня есть решение, которое сочетается с некоторыми примерами:
Это работает, пока вы не используете потоки. Использование потоков потребует большего количества кода и не понадобится для моей задачи.
Ответ 8
Если ваш другой класс наследует Form1, и если ваш textBox1 объявлен общедоступным, вы можете получить доступ к этому текстовому полю из своего другого класса, просто позвонив:
Ответ 9
Используйте глобальную переменную или свойство для назначения значения в текстовое поле, укажите значение для переменной в другом классе и назначьте ее textbox.text в классе формы.
Ответ 10
Ответ 11
Вот как я решил это после борьбы за это.
У меня есть глобальный класс, который я могу использовать по всему проекту
Я добавил это в основную форму (по умолчанию: Form1)
И я пишу этот код в классе, я хочу получить доступ к элементу в MainForm. Вы можете просто изменить Listbox на текстовое поле или что угодно.
Ответ 12
Я использовал этот метод для обновления метки, но вы можете легко изменить его на текстовое поле:
Класс:
Способы формы, которые будут выполнять обновление:
Наконец
Просто передайте форму через конструктор:
Ответ 13
Мне нравится это решение.
Ответ 14
Form1.textBox1.text = "изменить текст";
Примечание: 1. вы должны "включить" Form1 в свой второй исходный файл формы используя Form1;
Репутация: нет
Всего: нет
Репутация: 1
Всего: 62
Репутация: нет
Всего: 0
Вот пример кода:
.
тут нужна для того, чтобы разрешить ввод десятичного разделителя (точки в данном случае) - причем только одного: если десятичный разделитель уже существует, то вводить второй заперщено.
Репутация: нет
Всего: 4
Юзай MaskedTextBox c Маской из "0".
MaskedTextBox - спецальный контрл который создан для ограничения ввода в текст бокс
Репутация: нет
Всего: нет
Репутация: нет
Всего: 7
AKRAS
А в чём проблема?
Репутация: нет
Всего: 1
не самый лучший вариант, представите что вы пишете какой текст в поле ввода, долго пишете и как обычно смотрите только на клавиатуру, а потом поднимаете глаза и видите что из-за ололо ошибки ваш ввод закончился на первых двух символах. Думаю вы будете мягко говоря недовольны.
Можно просто запрещать ввод "неправильных" символов и где нибудь написать какие символы можно вводить например сверху над полем ввода или в всплывающей подсказке.
Или можно разрешать вводить все символы, и одновременно проверять валидность данных, и в случае присутствия "неверных" символов подсвечивать поле красным или как то еще сигнализировать о не правильном вводе.
Репутация: нет
Всего: нет
лучше использовать errorProvider.SetError(control, "Ололо ошибка" ), тогда возле указанного контрола появится красный кружок с восклицательным знаком, при наведении на который, будет отображаться "Ололо ошибка", а чтобы кружок исчез сделать errorProvider.SetError(control, "" ). Один errorProvider можно использовать для всех текстбоксов, в этом случае можно разрешить ввод любых символов и отображать предупреждение, когда вводятся буквы и убирать когда текст изменяется на правильный.
Репутация: нет
Всего: нет
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.
[ Время генерации скрипта: 0.1177 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Я бы хотел, чтобы предотвратить повторяющиеся записи могут быть введены в textbox. Я попробовал использовать следующий код, но он всегда извлекает текущее значение и не сопоставляется с тем, которое хранится в предыдущем textbox. Мои HTMLs генерируются динамически, так что я думаю, что это может быть проблемой.
2 ответа
Как я могу запретить пользователю вводить специальные символы в textbox с помощью jquery? special characters are like \ / ? * [ or ]
У меня есть textbox со значком календаря рядом с ним. При нажатии на значок всплывающая форма отображает элемент управления календарем. Я настроил его так, что они могут выбрать только дату окончания недели(суббота), и эта дата отображается в textbox. Я хочу запретить пользователям редактировать.
Проверить это. Я думаю, что это помогает вашей цели
Всякий раз, когда пользователь вводит что-то в текстовое поле, JQuery перебирает все текстовые поля в форме и сравнивает их значения со значением, которое только что ввел пользователь, если найдено дублирующее значение, а затем предупреждает пользователя.
Эта строка кода:
это приводит к тому, что ваш метод не работает. Он устанавливает id входного элемента в текущее значение, но инструкция jQuery не возвращает id . По сути, ваши currentValue и currentId имеют одно и то же значение, поэтому мы можем полностью удалить переменную currentId .
Пример:
Я хочу запретить ввод данных на другие элементы управления, кроме активного jQuery DatePicker (активный datepicker = фокус на его textbox или открытый календарь), пока я не проверю дату с помощью скрипта. Я попытался сделать это, предотвратив размытие, которое прекрасно работает, когда вы выходите.
Я предполагал подсчитать общее количество дубликатов записей в файле. Я использовал sort $TEMP_FILE2 | uniq -d перечислить все дубликаты записей без подсчета. Моя проблема в том, что я не знаю, какой сценарий использовать, чтобы суммировать или получить общее количество этих записей. Это должно.
Похожие вопросы:
Привет всем, я использую сканер RFID, который помещает отсканированный код в любое текстовое поле, доступное во время сканирования. Например, он может поместить текст в ячейку в Excel или в адресную.
У меня есть список, содержащий TextBox элемент управления. В основном все это сгруппировано внутри элемента управления groupbox. List<TextBox> listTextBox; Мне нужно проверить наличие.
Я работаю над проверкой, я должен проверить textbox, в котором мне нужно запретить ввод специальных символов. я имею в виду, что если пользователь заполняет только специальные символы в textbox, то.
Как я могу запретить пользователю вводить специальные символы в textbox с помощью jquery? special characters are like \ / ? * [ or ]
У меня есть textbox со значком календаря рядом с ним. При нажатии на значок всплывающая форма отображает элемент управления календарем. Я настроил его так, что они могут выбрать только дату.
Я хочу запретить ввод данных на другие элементы управления, кроме активного jQuery DatePicker (активный datepicker = фокус на его textbox или открытый календарь), пока я не проверю дату с помощью.
Я предполагал подсчитать общее количество дубликатов записей в файле. Я использовал sort $TEMP_FILE2 | uniq -d перечислить все дубликаты записей без подсчета. Моя проблема в том, что я не знаю.
Я пытаюсь предотвратить ввод текста в textbox, если только не установлен флажок checkbox, соответствующий textbox. // Validate Other textbox var isOther = document.getElementById(isOther);.
Мне нужно проверить ввод пароля на textbox, у меня есть несколько требований к заполнению, чтобы позволить создать профиль пользователя, и одно из них-отказать в регистрации, если пароль содержит.
Установить ActiveControl свойство формы, и все должно быть в порядке.
- 1 Я пробовал это для ComboBox . Но тоже не работает!
- 1 Спасибо, это сработало для меня, а все остальное - нет. Не уверен, почему Tab Index = 0 не будет работать, но, вероятно, при загрузке формы / отображении диалогового окна происходит странный порядок операций.
- 1 ПОПРОБУЙТЕ ЭТО >>> this.ActiveControl = yourtextboxname.Control;
- 3 Это отлично работает, но почему не MyTextBox.Focus(); работа - кажется, что после запуска программы все работает нормально.
- 2 Написать this.ActiveControl = textBox1; Все понимают значение textBox1. "youttextboxname" звучит как . = 'MyTextBox';
проверьте порядок вкладок и убедитесь, что текстовое поле установлено на ноль
- За работой. Или просто tabindex, чтобы быть первым элементом, на котором можно фокусировать курсор в форме.
Вы не можете установить фокус на элемент управления, если он не был отрисован. Form.Load () происходит до отрисовки элементов управления.
Вы можете попробовать:
Метод Select активирует элемент управления, если бит стиля Selectable элемента управления установлен в значение true в ControlStyles, он содержится в другом элементе управления и все его родительские элементы управления видимы и включены.
Сначала вы можете проверить, можно ли выбрать элемент управления, проверив свойство MyTextBox.CanSelect.
Если вы хотите установить фокус только при первом отображении формы, попробуйте обработать событие Form.Shown и сделать это там. В противном случае используйте Control.VisibleChanged.
Причина, по которой вы не можете заставить его работать, заключается в том, что Load Событие вызывается перед отрисовкой или визуализацией формы.
Это все равно, что сказать пиццерии, как ее приготовить, а затем попросить их прислать вам фотографию того, сколько пепперони в вашей пицце, прежде чем они ее приготовят.
Я решил свою проблему с изменением свойства "TabIndex" TextBox. Я установил 0 для TextBox, чтобы сосредоточить его на форме при запуске программы.
использовать форму показанного события и установить
Установите значение свойства Tab Index = 0, а затем в функции загрузки формы напишите:
Это будет работать.
Вы можете использовать либо textBox1.select(); или TabIndex в настройке текстового поля. TabIndex=0 сфокусированы в первую очередь.
- Если мы вызовем textBox1.select (); в обработчике события загрузки формы он устанавливает фокус в textBox1.
Установите для Tabstop значение True, а для TabIndex - минимальное значение для элемента управления, на котором вам нужно сосредоточиться.
это сработало для меня, установив tabindex на 0 this.yourtextbox.TabIndex = 0;
в вашей форме перейдите к свойствам и убедитесь, что для свойства TopMost установлено значение true, это решит вашу проблему.
Наконец, я обнаружил проблему, с которой я использовал структуру metro, и все ваши решения не будут работать с metroTextBox, и все ваши решения будут работать с обычным textBox в load, show, visibility_change, events, даже если индекс вкладки = 0 действителен.
Читайте также: