473,387 Members | 1,760 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

DataGridView leaves an empty row after escape pressed on new row

Hello,

I have a datagridview bound to a database table with 2 columns. One is an ID column "NameID" which is hidden, the other is called "Name".

The schema picture is here : http://img89.imageshack.us/img89/1251/dbschemaep9.jpg

What happens is :
1. Form loads with values from database inside the DGV
2. I press the checkbox to enable editing/adding etc in the grid (see code event)

Picture : http://img145.imageshack.us/img145/8819/step1yy3.jpg

3good. I click inside the NewRow and type "a" or whatever (something invalid) ...

Picture : http://img80.imageshack.us/img80/1923/step2cl5.jpg

4good. and press escape ... the row is deleted! (Just as I want it)

But... alternatively

3bad. I click inside the NewRow and type "a" or whatever (something invalid), then click outside the DGV on the checkbox or the button, the DGV still keeps focus as "a" fails validation and forces the DGV to keep focus, an error icon is also shown as normal

Picture : http://img80.imageshack.us/img80/1923/step2cl5.jpg
Picture : http://img89.imageshack.us/img89/4729/step3jl5.jpg

4bad. THEN I press escape ... and there is an empty row left! I have no idea why this happens as the focus never left the DGV (as far as I know) so I dont see why the behaviour is different.

Picture : http://img89.imageshack.us/img89/8317/step4yg5.jpg

==================

Please if anyone knows what Im doing wrong, let me know, I havent been able to figure out why it does this for over a day.

==================

CODE :

Imports System.Text.RegularExpressions

Public Class frmNames

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'SampleDbDataSet.Names' table. You can move, or remove it, as needed.
Me.NamesTableAdapter.Fill(Me.SampleDbDataSet.Names )
End Sub

Private Sub dgvNames_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvNames.CellEndEdit
' Remove the error icon (valid input or escape pressed)
dgvNames.Rows(e.RowIndex).ErrorText = String.Empty
End Sub

Private Sub dgvNames_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvNames.CellValidated
' Get reference to current datarow
Dim CurrentDataRow As SampleDbDataSet.NamesRow = DirectCast(NamesBindingSource.Current, DataRowView).Row

' Update current row
If CurrentDataRow.RowState <DataRowState.Unchanged Then
NamesTableAdapter.Update(CurrentDataRow)
End If
End Sub

Private Sub dgvNames_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEve ntArgs) Handles dgvNames.CellValidating
' Don't validate an empty row
If dgvNames.Rows(e.RowIndex).IsNewRow Then Exit Sub

' Check the name against a pattern
If Regex.IsMatch(e.FormattedValue, "^[A-Z]\. [A-Z][a-z]+['-]?[a-z]+$") = False Then
dgvNames.Rows(e.RowIndex).ErrorText = "The name is invalid, it should be something like A. Mohammed"
e.Cancel = True
End If
End Sub

Private Sub chkEdit_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkEdit.CheckedChanged
' Enable or disable the grid for editing
With dgvNames
.ColumnHeadersVisible = chkEdit.Checked
.RowHeadersVisible = chkEdit.Checked
.AllowUserToAddRows = chkEdit.Checked
.AllowUserToDeleteRows = chkEdit.Checked
.ReadOnly = Not chkEdit.Checked
End With
End Sub

Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
' Close the form
Me.Close()
End Sub
End Class

--------------= Posted using GrabIt =----------------
------= Binary Usenet downloading made easy =---------
-= Get GrabIt for free from http://www.shemes.com/ =-

Jul 26 '06 #1
0 903

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Binny V A | last post by:
Hello Everyone, I am new to python and I am trying to get a program to close a application when the Escape Key is pressed. This is the code that I used ---------------------------------...
0
by: YiFai | last post by:
Hello, I'm currently writing a directx program with C++, but it takes a while to load the files necessary for the directx. When the directx window loads, it can quit the program with the...
16
by: sudhir | last post by:
hi how to check escape key is pressed when accepting the string as input. Because I do not want to receive a string if user presses the ESCAPE key.. I used ascii code for comparision but I...
0
by: TNSFED | last post by:
I have a dilemma when trying to delete a row from the DataGridView. Here is a sample of my code: private void dgv_EQUPS_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) {...
1
by: David | last post by:
I have a realtime stock quote system developed where I am updating a typed dataset with realtime quotes. I want my DataGridView control to show green forecolor when a price moves up and red...
1
by: George | last post by:
Hi, Does anyone know how to simulate the 'escape' key functionality for cancelling add ing a new row in DataGridView. I have attempted to use CancelEdit(). They seem to only remove/dispose...
0
by: Asif Mohammed | last post by:
Hello, I have a datagridview bound to a database table with 2 columns. One is an ID column "NameID" which is hidden, the other is called "Name". The schema picture is here :...
0
by: Asif Mohammed | last post by:
Hello, I have a datagridview bound to a database table with 2 columns. One is an ID column "NameID" which is hidden, the other is called "Name". The schema picture is here :...
3
by: hzgt9b | last post by:
Using VS2005, VB.NET, I am developing a windows app that has a DataGridView. I want to enable the display of a context menu on this DataGridView only when a specific set of keys is also pressed...
0
by: jchaturv | last post by:
All, I have a customized DataGridView where I have implemented extra functionality and bounded datasource in the same custom DataGridView (Using C# and .NET). Now, I could able to use it...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.