NumericUpDown, похоже, имеет дело только с целыми числами. Как я могу изменить его (?), Поэтому я могу использовать удвоения в качестве значения и приращения?WinForms: NumericUpDown (.NET CF 3.5) и действительные числа
ответ
Существует свойство DecimalPlaces. Установите его на нечто большее, чем 0, и это позволит вам работать с десятичными знаками.
Не работает на CF. –
Кажется, что нет «Десятичных фигур» в CompactFramework – 2009-08-24 20:17:38
oops, извините, не заметили __CF__ –
NumericUpDown работает с десятичными типами, но является целым числом только на компактном каркасе. Это ограничение класса CF.
Существует, однако, CodeProject UserControl, который обеспечивает реализацию для CF.
Есть ли обходной путь или бесплатная альтернатива? – 2009-08-24 20:18:27
Да. Я просто добавил это к своему ответу. –
Спасибо. Я видел это. Его текстовое поле с двумя изображениями и таймером (!!). Я тестировал его, и он не получает вход в 50% случаев. Я щелкаю и ничего не происходит. – 2009-08-24 20:33:09
Я просто использую текстовое поле, а затем переопределяю событие OnKeyPress. Этот код работал для меня в прошлом, но хорош только для групп, которые пишут 1234,56, а не 1234,56.
public partial class NumberTextBox : TextBox
{
public NumberTextBox()
{
InitializeComponent();
}
public decimal Value
{
get
{
try
{
return decimal.Parse(Text);
}
catch (Exception)
{
return -1;
}
}
}
public int ValueInt
{
get { return int.Parse(Text); }
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar)
&& e.KeyChar != '.')
{
e.Handled = true;
}
// only allow one decimal point
if (e.KeyChar == '.' && (this).Text.IndexOf('.') > -1)
{
e.Handled = true;
}
base.OnKeyPress(e);
}
public void AppendString(string value)
{
if (string.IsNullOrEmpty(value))
{
Text = string.Empty;
}
else
{
if (value == "." && Text.IndexOf('.') > -1)
return;
Text += value;
}
}
}
Мой код является всего лишь одним блочным кодом здесь (протестирован с Compact Framework);
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '.')
{
if (((TextBox)sender).Text.IndexOf('.') > -1)
{
e.Handled = true;
}
else if (((TextBox)sender).Text.Length == 0)
{
e.Handled = true;
}
}
else if (!char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
if (e.KeyChar == '\b') // backspace silme tuşunun çalıması için gerekli
{
e.Handled = false;
}
base.OnKeyPress(e);
}
, кстати, я ненавижу Compact Framework. Потому что он слишком ограничен! Но я должен :(
Обязательно добавьте это в качестве комментария: NumericUpDown - это, наверное, самый уродливый, самый бескомпромиссный, самый бесполезный контроль в истории Windows. Ваши клиенты будут любить вас, если вы придумаете любой другой способ ввода чисел. ввод чисел с помощью SIP (в режиме клавиатуры) - это боль, но если вы зададите вопрос «Какой способ ввести номера в Windows Mobile?», я опубликую самый красивый фрагмент кода C#, который я когда-либо встречал – MusiGenesis
Я использовал слайд-бары рядом с ними на рабочем столе, чтобы сделать его проще. – 2009-08-24 20:29:38
@MusiGenesis: http://stackoverflow.com/questions/1324559/whats-the-best-way-to-enter-numbers-in-windows -mobile-net-cf-3-5/1324599 # 1324599;) – 2009-08-24 20:37:07