В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Это должно добиться цели:
private void maskedTextBox1_Enter(object sender, EventArgs e)
{
this.BeginInvoke((MethodInvoker)delegate()
{
maskedTextBox1.Select(0, 0);
});
}
Для улучшения рабочего решения Abbas попробуйте это:
private void ueTxtAny_Enter(object sender, EventArgs e)
{
//This method will prevent the cursor from being positioned in the middle
//of a textbox when the user clicks in it.
MaskedTextBox textBox = sender as MaskedTextBox;
if (textBox != null)
{
this.BeginInvoke((MethodInvoker)delegate()
{
int pos = textBox.SelectionStart;
if (pos > textBox.Text.Length)
pos = textBox.Text.Length;
textBox.Select(pos, 0);
});
}
}
Этот обработчик событий может быть снова использован с несколькими полями, и он не устраняет способность пользователя расположить курсор посреди вводимых данных (т.е. не вызывает курсор в, обнуляет положение, когда поле не пусто).
я нахожу, что это более тесно имитирует стандартное текстовое поле. Только остающийся незначительный сбой (что я вижу) - то, что после события 'Enter', пользователь все еще в состоянии выбрать остальную часть (пустой) подсказки маски, если ксенон удерживает мышь и перетаскивает до конца.
Частичный ответ: можно расположить каре путем присвоения выбора с 0 длинами управлению в событии MouseClick, например:
MaskedTextBox1.Select(5, 0)
... установит каре в 5-й позиции символа в текстовом поле.
причина этот ответ только неравнодушен, то, потому что я не могу думать о вообще надежном способе определить положение, где каре должно быть расположенным на щелчок. Это может быть возможно для некоторых масок, но в некоторых общих падежах (например, американская маска номера телефона), я не могу действительно думать о простом способе разделить маску и быстрые символы от фактического ввода данных пользователем...
Это большое улучшение по сравнению с поведением MaskedTextBoxes по умолчанию. Спасибо!
Я внес несколько изменений в отличное решение Измаила. Я предпочитаю вызывать BeginInvoke только в том случае, если курсор нужно переместить. Я также вызываю метод из различных обработчиков событий, так что входным параметром является активный MaskedTextBox.
private void maskedTextBoxGPS_Click( object sender, EventArgs e )
{
PositionCursorInMaskedTextBox( maskedTextBoxGPS );
}
private void PositionCursorInMaskedTextBox( MaskedTextBox mtb )
{
if (mtb == null) return;
int pos = mtb.SelectionStart;
if (pos > mtb.Text.Length)
this.BeginInvoke( (MethodInvoker)delegate() { mtb.Select( mtb.Text.Length, 0 ); });
}