現在のウィンドウ設定で小数点を検出する必要があります。私は、Visual Studio 2010、Windowsフォームを使用しています。特に、DecimalSeparatorがコンマの場合、ユーザーがtextbox1にドットを入力すると、textbox2にゼロを表示する必要があります。
私はこのコードを試しましたが、うまくいきません:
private void tbxDaConvertire_KeyPress(object sender, KeyPressEventArgs e)
{
string uiSep = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator;
if (uiSep.Equals(","))
{
while (e.KeyChar == (char)46)
{
tbxConvertito.Text = "0";
}
}
}
私もこのコードを試してみましたが、うまくいきません:
private void tbxDaConvertire_KeyPress(object sender, KeyPressEventArgs e)
{
string uiSep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
if (uiSep.Equals(","))
{
if (e.KeyChar == (char)46)
{
tbxConvertito.Text = "0";
}
}
}
溶液:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char a = Convert.ToChar(Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator);
if (e.KeyChar == a)
{
e.Handled = true;
textBox1.Text = "0";
}
}
それが役に立てば幸いです。そうすれば、「。」を押すとまたは「、」でテキストボックスが0になります
編集:
小数点区切りにヒットするたびに0を挿入する場合、これはコードです。
char a = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
if (e.KeyChar == a)
{
e.KeyChar = '0';
}
実際に使用する必要があります
Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator
の代わりに
CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator
2番目の設定を使用すると、OSのデフォルト設定が得られます。これは、このPCにログインした特定のユーザーアカウントのユーザーの地域ロケールとは異なる場合があります。
while
ループを使用すべきではありません。アプリケーションをフリーズします。代わりにif
を使用してください。問題はここにある可能性があります