私はC#で初めてのMFCプログラマです。数字入力と範囲検証を可能にする簡単なコントロールを探しています。シンプルなC#数値エディットコントロールをお探しですか?
答えて
"NumericUpDown"コントロールを見てください。それは範囲のバリデーションを持っています、入力は常に数値であり、それらはきれいなインクリメント/デクリメントボタンを持っています。
通常のテキストボックスとValidatorコントロールを使用して入力を制御できます。
エラープロバイダーコントロールを使用してテキストボックスを検証してみてください。 int.TryParse()またはdouble.TryParse()を使用して数値であるかどうかを確認し、範囲を検証できます。
あなたがそうでなければ上記の勧告は良いですが、あなたが希望の場合は、通常のテキストボックスでそれを取得します(整数に設定オペレータとタイプのためDataTypeCheckに設定)のRequiredFieldValidatorとこのCompareValidatorの組み合わせ
を使用することができます。
数字、整数、または実数しか受け入れないコントロールを実装する必要がありました。 私はTextBoxコントロールの特殊化(読み込み:派生)コントロールを構築し、入力コントロールと正規表現を使用して検証を行います。 範囲の検証を追加するのは非常に簡単です。
これは、正規表現を構築するためのコードです。 _numericSeparationは、小数点にカンマが (例えば、A値として受け入れ文字の文字列であるか、A「」「」:$ 10.50 10,50€
private string ComputeRegexPattern()
{
StringBuilder builder = new StringBuilder();
if (this._forcePositives)
{
builder.Append("([+]|[-])?");
}
builder.Append(@"[\d]*((");
if (!this._useIntegers)
{
for (int i = 0; i < this._numericSeparator.Length; i++)
{
builder.Append("[").Append(this._numericSeparator[i]).Append("]");
if ((this._numericSeparator.Length > 0) && (i != (this._numericSeparator.Length - 1)))
{
builder.Append("|");
}
}
}
builder.Append(@")[\d]*)?");
return builder.ToString();
}
正規表現は、任意の数(すなわち、数値で任意の文字列に一致します文字の先頭に '+'または ' - 'のオプション文字が1つしかない場合 正規表現を作成したら(コントロールをインスタンス化するとき)、値が正しいかどうかをチェックします(ValidationErrorパブリックプロパティで設定された)エラープロバイダをアクティブにし、ValidationErrorイベントを発生させます。 CheckValidNumber()は、導入されたテキストにRegexを適用するだけです。ここで、照会を行い、番号が再入荷された範囲内にあるかどうかを知ることができます。
private bool CheckValidNumber()
{
if (Regex.Match(this.Text, this.RegexPattern).Value != this.Text)
{
this._errorProvider.SetError(this, this.ValidationError);
return false;
}
this._errorProvider.Clear();
return true;
}
protected override void OnValidating(CancelEventArgs e)
{
bool flag = this.CheckValidNumber();
if (!flag)
{
e.Cancel = true;
this.Text = "0";
}
base.OnValidating(e);
if (!flag)
{
this.ValidationFail(this, EventArgs.Empty);
}
}
私が言ったように、私もONKEYPRESS methdodをオーバーライド数値characteres以外のテキストボックスに入力されたデータからユーザーを防ぐために:
protected override void OnKeyPress(KeyPressEventArgs e)
{
if ((!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar)) && (!this._numberSymbols.Contains(e.KeyChar.ToString()) && !this._numericSeparator.Contains(e.KeyChar.ToString())))
{
e.Handled = true;
}
if (this._numberSymbols.Contains(e.KeyChar.ToString()) && !this._forcePositives)
{
e.Handled = true;
}
if (this._numericSeparator.Contains(e.KeyChar.ToString()) && this._useIntegers)
{
e.Handled = true;
}
base.OnKeyPress(e);
}
エレガントなタッチ:すべての番号が有効な場合、私は確認してくださいユーザがキーを離すときに、ユーザは彼/彼女がタイプするときにフィードバックを得ることができる。 (ただし、ValidationFailイベントには注意する必要があります)。
protected override void OnKeyUp(KeyEventArgs e)
{
this.CheckValidNumber();
base.OnKeyUp(e);
}
- 1. シンプルなRSSフィードリーダーをお探しですか?
- 2. 数値/マルチメディア/ signal_processingベンチマークをCで探しています(おそらくC++)
- 3. 売掛金のシンプルなデータベース設計をお探しの場合
- 4. C++の簡単なクロスプラットフォームフレームワークをお探しですか?
- 5. フレキシブルなレポートソリューションをお探しですか
- 6. クリエイティブなデザインパターンをお探しですか?
- 7. オープンソースのC/C++イメージ/ビデオサムネイル生成ライブラリをお探しですか?
- 8. ブラウザで動作するシンプルな3Dビジュアライゼーションソリューションをお探しの場合
- 9. 良いクロスプラットフォームのC++フレームワークをお探しですか?
- 10. ASP.net、C#4、WebMethod、JQuery-Ajax、JSONデータ - リターンをお探しですか?
- 11. シンプルな永続ストアfor Javaを探す
- 12. シンプルなプラグインモデルへのパスを探す
- 13. マルチプラットフォームアナリティクスソリューションをお探しですか?
- 14. ブラウザのリフローベンチマークをお探しですか
- 15. フリーウェアポストスクリプトフォントエディタをお探しですか?
- 16. ファミリーツリーをお探しですか?
- 17. VPCEA36FXドライバをお探しですか?
- 18. VB6オンラインヘルプをお探しですか?
- 19. 良いクリッカーアプリケーションをお探しですか?
- 20. デザインパターンをお探しですか
- 21. ファセットナビゲーションチュートリアルをお探しですか?
- 22. ウェブページのテストテキストをお探しですか?
- 23. OSGiデザインパターンをお探しですか?
- 24. C#のためのきれいなWinForms MVCチュートリアルをお探しですか?
- 25. Webdriver(c#) - おそらくテキストでボタンを探します
- 26. シンプルなC関数呼び出し
- 27. 高度なjQueryベースのスケジューラウィジェットをお探しですか?
- 28. WebDAVが有効なウィンドウエディタをお探しですか?
- 29. カスタマイズ可能なフローチャートビルダービルダーをお探しですか?
- 30. angle2のソート可能なテーブルをお探しですか?
ASP.Netのみ。彼はMFCの開発者だった場合、彼はおそらくwinformsを考えている。 –