NumericUpDown は整数のみを扱っているようです。どうすれば変更できますか (?)、値とインクリメントとして double を使用できますか?
3867 次
4 に答える
2
NumericUpDown は 10 進数型で機能しますが、コンパクト フレームワークでのみ整数になります。これは CF 上のクラスの制限です。
ただし、CF の実装を提供するCodeProject UserControlがあります。
于 2009-08-24T20:16:59.700 に答える
2
テキストボックスを使用して、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;
}
}
}
于 2009-08-25T15:14:11.973 に答える
0
DecimalPlaces というプロパティがあります。0より大きい値に設定すると、小数を扱うことができます
于 2009-08-24T20:15:21.967 に答える