Thanx for replying my posting, I wonder why it is so hard to do such a trivial thing in .NET ... this is extremely easy to be done in VB or VC++. Actually I want to have an AcceptButton in the form to connect to a database. Ok, here are the details:
I have a form which contains two text boxes and a button (with the caption "Connect") in a groupbox, one of the textboxes is used for entering a path to a DB file, the other textbox is used for entering the DB password for that database (if any), when the button is clicked the application tries to connect to the database using the information in the two textboxes. The button is the AcceptButton for the form (to make it easier for the user .. just enter the location and password then press Enter). One last thing to mention about the button is that when the button is clicked and the connection is made to the datebase the caption of the button is changed from "Connect" to "Disconnect" and if the button is clicked again the connection is closed and the caption is changed back to "Connect" and so on. In the same form I have antoher groupbox which contains a text box and a DataGrid control (disabled if there is no connection to the database). What I want is after the user makes the connection to a database to be able to enter a SQL command in the text box and press Enter then the results of the query is displayed in the datagird control. Of course, this is not possible now because if the user enters a SQL command and then presses Enter, the AcceptButton is clicked and the connection is lost.
The whole purpose of this application is educational. For now, the only way to finish the application was to not use an AcceptButton in the form and use another button beside the SQL command textbox to execute the SQL command when clicked after entering the command in the textbox.
I just find it so natural to be done this way, I want to learn how. Many thanx
Before I start this, I want to point out that this isn't a fantastic design. This is the reason you're finding it so difficult. The problem is that C++ is capable of pretty much anything and VB is capable of pretty much anything you really shouldn't do. [half joking, I'll come back to this later]
It is possible though, and really quite easy.
You need to handle the Enter and Leave events of the SQL Command TextBox and use them to change the AcceptButton of the form.
If you would rather not have an AcceptButton for this TextBox but would prefer to trap the KeyDown, you could replace button2 with null. I would suggest this is a really bad idea though, it should be obvious to the user that the AcceptButton has moved.
In the real world (non-educational), I would suggest quite strongly that this whole thing is bad design. In the real world, I would expect a menu containing Connect and Disconnect (only one active at any given time). Connect would give you a dialog for User/Password, Disconnect wouldn't. The only things I'd have in the main form is the SQL Command TextBox and the related AcceptButton.
As a consumer, I wouldn't buy your product designed to be so confusing.
Well, may be you're right .. anyway, I was not thinking about program design when I sent my posting, I just wanted to know how to do it. You know, it's just about being used to doing something easily and after that you move to .NET and you find out that it is not possible anymore and you try to figure out how to do it, I guess it's all about curiosity. I wonder why the KeyDown event is not raised when Enter is pressed, I wish to understand their point of view.
Didn't mean to sound critical there, just offering several options and why I thought one would be better than another.
I assume it doesn't raise the event because it raises the form-level events first. The first thing in the form's Key events will be "if [enter pressed] and AcceptButton != null then simulate AcceptButton.Click".
The second thing it will do is "raise the same Key event for the active control".
While this sequence doesn't quite fit what you wanted it to do, it is the sequence that makes sense. People are more likely to want to trap key presses at the form level BEFORE the control level.
What I have discovered so far is that the KeyUp event is raised whenever Enter is pressed (unlike KeyDown). But it is still raised after the Click event for the AcceptButton is raised.
Now, I'm trying to use OnNotifyMessage() (first, you have to use SetStyle() to enable the control to receive Windows messages and derive your class from System.Windows.Forms.Form). I have to use the Message ID for the KeyDown Windows message (WM_KEYDOWN). I think it can be done this way, but there must be an easier way. Any clues?
i want to show a string in vs.net debug output window.
i think i can use Trace or Debug class. but i dont now how to use them to display a string in managed code ?
if there exist some other way plz tell?
i want to see the execution and flow of my program
can any bode tell?
plz write the complete syntex.i will be very thank full to u.
I am trying to open an Excel workbook to use in my C# application. I have found many examples of opening a blank (new) workbook using new Excel.Application(). How do I open a specific xls file using Excel.Application ?
//open Excel with new workbook
Excel.Application excel = new Excel.Application();
excel.Application.Visible = true;
I have been able to open a specific file using Process
Excel.Application excel = new Excel.ApplicationClass();
excel.Visible = true; // remove this line to keep excel silent
Excel._Workbook wbk2 = excel.Workbooks.Open(@"c:\mydoc.xls",true,true,true,true,true,true,true,true,true,true,true,true);
if you start putting in too manay features, it no longer remains useful for beginners quote in a CP article comment, shiraz baig
I am looking for a way to activate an event procedure, such as combox_clicked, without really clicking on the control . I remember in VB we can do thing like that (combox_clicked = true). Just wonder can we do this in C#? I appreciate your inputs.
Does anybody know if there is a way to use the GetFiles method to retrive files using more than one search pattern (similar to what you can do with the OpenFileDialog class). For example, I want to use the GetFiles method to return all image files with the *.jpg, *.bmp, *.gif, etc extensions but it seem the method will only take one at a time and won't accept a string in the same format as the the FileDialog class. I thought about making multiple calls to GetFiles and putting the results into a stack and then popping them out one-by-one to sort them together into one array but I wanted to see if anybody could come up with an easier way.
ds is an in-memory DataSet, not associated with any database, a simple way to access what's in the DataGrid. grdProducts if of course a DataGrid.
The problem is that most of the times I run this code there's an unhandled NullReferenceException exception ("Object reference not set to an instance of an object").
Looking at the stack trace, it happens when the DataGrid is painting itself (after a WndPaint event). If I omit the grdProducts.Refresh() call in my code, I don't see any of my functions in the stack trace, but adding it makes the function in progress appear several levels down the trace (obvious).
But I have a suggestion is that as you are trying the clear the rows, clearing the table would have the same effect, so will clearing the Columns. Perhaps a cross reference is causing the null reference exception.
Hope this helps
Give them a chance! Do it for the kittens, dear God, the kittens!