私はWindowsアプリケーション開発に不慣れです。
ユーザーがレコードを入力できる「データグリッドビューテキストボックス列」タイプのグリッドビュー列があります。そのグリッドには、数量とレートの2つの列があります。これらの2つの列は、数値のみを受け入れる必要があります。これを検証するにはどうすればよいですか?
さて、あなたはこのようなことをして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;
}
}
}
お役に立てれば
@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 記事を参照してくださいキーの列挙
これを試して。お役に立てれば。
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.");
}
}
}