0

私はWindowsアプリケーション開発に不慣れです。

ユーザーがレコードを入力できる「データグリッドビューテキストボックス列」タイプのグリッドビュー列があります。そのグリッドには、数量とレートの2つの列があります。これらの2つの列は、数値のみを受け入れる必要があります。これを検証するにはどうすればよいですか?

4

3 に答える 3

1

さて、あなたはこのようなことをしてWaqasコードを変更することができます

 private void dataGridViewTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (((System.Windows.Forms.DataGridViewTextBoxEditingControl)  
         (sender)).EditingControlDataGridView.CurrentCell.ColumnIndex.ToString() ==  
         "1")//Enter your column index
        {
            if (!char.IsControl(e.KeyChar)
                  && !char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
                MessageBox.Show("Enter only Numeric Values");

            }
            else
            {
              //  MessageBox.Show("Enter only Numeric Values");
                e.Handled = true;
            }
        }
    }

お役に立てれば

于 2013-03-01T05:56:45.333 に答える
1

@Kyleソリューションはより近いですが、この目的のためにキープレスイベントをキャプチャしたい場合は、2つのイベントを処理する必要があります

セルを編集するためのコントロールが表示されているときに発生します

private void dataGridView1_EditingControlShowing(object sender,
    DataGridViewEditingControlShowingEventArgs e)
{
  // here you need to attach the on key press event to handle validation
  DataGridViewTextBoxEditingControl tb = (DataGridViewTextBoxEditingControl)e.Control;
  tb.KeyPress += new KeyPressEventHandler(dataGridViewTextBox_KeyPress);

  e.Control.KeyPress += new KeyPressEventHandler(dataGridViewTextBox_KeyPress);
}

/// キー押下イベント

private void dataGridViewTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
  // when user did not entered a number
  if (!Char.IsNumber(e.KeyChar)
        && (Keys)e.KeyChar != Keys.Back)  // check if backspace is pressed
  {
    // set handled to cancel the event to be proceed by the system
    e.Handled = true;
    // optionally indicate user that characters other than numbers are not allowed
    // MessageBox.Show("Only numbers are allowed");
  }
}

乾杯@リヤズ

編集

より機能的なキーボード キーが必要かどうかを確認する必要があり(Keys)e.KeyChar != Keys.Backます。システム Windows フォーム キーの msdn 記事を参照してくださいキーの列挙

于 2013-03-01T07:15:39.663 に答える
0

これを試して。お役に立てれば。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            var value = (((DataGridView) (sender)).CurrentCell).Value;
            if (value != null)
            {
                var txt = value.ToString();
                double result;
                double.TryParse(txt, out result);
                if (result == 0)
                {
                    (((DataGridView)(sender)).CurrentCell).Value = 0;
                    MessageBox.Show("Invalid input.");
                }
            }
        }
于 2013-03-01T06:37:34.720 に答える