Windows forms textbox запрет на ввод

Обновлено: 04.07.2024

В 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

Перехватываешь OnKeyDown у своих текстбоксов. Что-то типа этого:

Репутация: нет
Всего: 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, у меня есть несколько требований к заполнению, чтобы позволить создать профиль пользователя, и одно из них-отказать в регистрации, если пароль содержит.

как сфокусироваться на 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 действителен.

Читайте также: