この記事は2022年06月15日に投稿しました。
目次
リンク
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているC#のDataGridViewで入力された値を検証する方法についてです。
2. C#のDataGridViewで入力された値を検証する
C#のDataGridViewで入力された値を検証するには、CellValidatingイベントを使用します。
実装例
using System; using System.Windows.Forms; namespace SampleDataGridViewCellValidating { public partial class MainForm : Form { /// <summary> /// コンストラクタ /// </summary> public MainForm() { // コンポーネントを初期化します。 InitializeComponent(); } /// <summary> /// フォームがロードされた時に呼び出されます。 /// </summary> /// <param name="sender">フォーム</param> /// <param name="e">イベント</param> private void MainForm_Load(object sender, EventArgs e) { // データグリッドに列を追加します。 DataGridView.Columns.Add(new DataGridViewColumn() { CellTemplate = new DataGridViewTextBoxCell() }); DataGridView.Columns.Add(new DataGridViewColumn() { CellTemplate = new DataGridViewTextBoxCell() }); // 行ヘッダーを設定します。 DataGridView.Columns[0].HeaderText = "名前"; DataGridView.Columns[1].HeaderText = "年齢"; // データグリッドに行を追加します。 DataGridView.Rows.Add("太郎", 20); DataGridView.Rows.Add("次郎", 18); DataGridView.Rows.Add("三郎", 7); // 行の追加を禁止します。 DataGridView.AllowUserToAddRows = false; } /// <summary> /// セルの検証中に呼び出されます。 /// </summary> /// <param name="sender">データグリッドビュー</param> /// <param name="e">イベント</param> private void DataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { // 対象のセルの行インデックスと列インデックスを取得します。 var rowIndex = e.RowIndex; var columnIndex = e.ColumnIndex; // ヘッダ行またはヘッダ列の場合 if ((rowIndex < 0) || (columnIndex < 0)) { // 何もしません。 return; } // 年齢列ではない場合 if ((columnIndex != 1)) { // 何もしません。 return; } // 入力前の値を取得します。 var dataGridView = (DataGridView)sender; var oldValue = dataGridView.Rows[rowIndex].Cells[columnIndex].Value.ToString(); // 入力された値を取得します。 var newValue = e.FormattedValue.ToString(); // 値が変更されていない場合 if (oldValue.Equals(newValue)) { // 何もしない。 return; } // 入力された値が整数ではない場合 var nValue = 0; if (!int.TryParse(newValue, out nValue)) { MessageBox.Show("正の正数を入力してください。"); // 入力を無効にする。 e.Cancel = true; return; } // 負の数の場合 if (nValue < 0) { MessageBox.Show("正の正数を入力してください。"); // 入力を無効にする。 e.Cancel = true; return; } } } }
実行結果
入力前
正の正数以外を入力後
API Reference
DataGridViewクラス
CellValidatingイベント
3. おわりに
セルの入力で、正の正数のみを入力可とする必要があり、その方法を調査しました。
リンク
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688