|
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyDown);
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter )
{
this.listBox1.Items.Add(this.textBox1.Text );
}
}
|
|
|
|
|
Thank you. But how and where do i fire this event. Please
Nana
|
|
|
|
|
You need not do anything to fire. When you press Enter key it will automatically get fired.
|
|
|
|
|
Sample project
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication1
{
///
/// Summary description for Form1.
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.ListBox listBox1;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.listBox1 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(88, 32);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 0;
this.textBox1.Text = "textBox1";
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyDown);
//
// listBox1
//
this.listBox1.Location = new System.Drawing.Point(72, 88);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(120, 95);
this.listBox1.TabIndex = 1;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter )
{
this.listBox1.Items.Add(this.textBox1.Text );
}
}
}
}
|
|
|
|
|
thank you thank you thank you. it's working.
Nana
|
|
|
|
|
hi
i got this error...
what should i do?
'System.Windows.Forms.KeyEventArgs' does not contain a definition for 'KeyChar'
thanks
|
|
|
|
|
Checkout the example below and make sure u have included all the libraries.
Sample project
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication1
{
///
/// Summary description for Form1.
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.ListBox listBox1;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.listBox1 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(88, 32);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 0;
this.textBox1.Text = "textBox1";
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyDown);
//
// listBox1
//
this.listBox1.Location = new System.Drawing.Point(72, 88);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(120, 95);
this.listBox1.TabIndex = 1;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter )
{
this.listBox1.Items.Add(this.textBox1.Text );
}
}
}
}
Nana
|
|
|
|
|
it should be 'System.Windows.Forms.KeyPressEventArgs' instead of 'System.Windows.Forms.KeyEventArgs'
Nana
|
|
|
|
|
yes that was the mistake =)
thanks, though i finally managed to solve b4 i saw this reply..
|
|
|
|
|
I have an MS Access table that I'm accessing from C# (via MSDE 2000). The primary key in the table is just an int column with identity set to "yes" and step set to '1'. So whenever I add a record Access automatically gives it a new primary key. Yay.
That works fine, but what I'd really like is to be able to retrieve the key that Access generates at the time that I insert the new record.
So right now my C# program just figures out the values for the non-primary keys and then sends an INSERT INTO command. Is there anyway to automatically retrieve the new ID that Access generates?
The only idea that I have so far is to create an additional column in the table called "isNew" or something. When the user submits the new record, the SQL statement could set the "isNew" column for that record to the user name. Then I could immediately send a SELECT to retrieve the ID WHERE isNew = 'user name'. Of course, then I'd also have to send yet another UPDATE to SET isNew = ''. So it's kind of a cumbersome solution, but at least it will work.
Anyone have anything better?
The ends can never justify the means. It is the means that determine the ends.
|
|
|
|
|
Get the most recently created id by running the query "select @@identidy" with the same database connection.
---
b { font-weight: normal; }
|
|
|
|
|
Thanks! I think that will work well. My only concern is that if two users simultaneously add records to the table, there could be trouble. But if I run the select query within a line or two of running the insert into query the chances of this happening are very low, right?
I would still like to have a full-proof method for future reference though. While I will only have a handful of users on this database at the same time, the program might conceivably need to be scaled up to over a 1,000 users.
Any idea what might work in that case?
The ends can never justify the means. It is the means that determine the ends.
|
|
|
|
|
Using identity column is not a good idea. There are many problems associated one being identity gap. I think you should implement your own increment procedure.
Have a table with the follwoing schema
CREATE TABLE dbo.Sequence
(
TableName varchar(30) NOT NULL,
NextVal int NOT NULL
)
LOCK DATAROWS
go
GetSequence should get you the id
CREATE PROCEDURE GetSequence (
@tbl varchar(30))
AS
DECLARE @nextval int
BEGIN
BEGIN TRAN
UPDATE Sequence
SET NextVal = NextVal + 1
WHERE TableName = @tbl
IF @@rowcount = 1
SELECT @nextval = NextVal
FROM Sequence
WHERE TableName = @tbl
COMMIT TRAN
SELECT @nextval
END
This will work even if there are 100 concurrent users
|
|
|
|
|
The @@identity method is absolutely safe. The value returned is the identity of the record last created within the same database session, e.g. with the same database connection.
If two users create a record each at exactly the same time, they still have separate database sessions, so the id returned to each user is the id of the record that that specific user created.
---
b { font-weight: normal; }
|
|
|
|
|
Hello,
I have a groupBox, and I want to add a HScrollBar, how can I implement the scrolling action if I have the controls within that groupBox, that are out of the groupBox's client area?
Thank you
|
|
|
|
|
|
Unfortunatelly GroupBox does not have AutoScroll property.
|
|
|
|
|
Can you put a panel in the GB, and add your controls to the panel instead?
|
|
|
|
|
That's exactly what I am going to do. Thank you.
|
|
|
|
|
Hello,
Is there a way of GradingOut DataGrid, so if it's Enabled = false, how can I show that it is disabled. Because my grid is in the pannel, so if I disable the pannel, grid gets disabled, however it looks like it's enabled.
I would want something like the textbox, if it's disabled it gets (ReadOnly) appearance.
Thank you
|
|
|
|
|
Do this in DataGridTextBoxColumn wire up GrayOutCellEvent
when the status of the Grid changes to Enabled = false.
protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
{
foreBrush = SystemBrushes.HighlightText;
.....
if (
this.GrayOutCellEvent != null &&
!this.DataGridTableStyle.DataGrid.IsSelected(rowNum)
)
{
GrayOutCellEventArgs grayOutCellEventArgs = new GrayOutCellEventArgs(rowNum);
this.GrayOutCellEvent(this, grayOutCellEventArgs);
if (grayOutCellEventArgs.IsGrayOut)
{
backBrush = SystemBrushes.ControlLight;
}
}
}
|
|
|
|
|
hi to all,
i need to populate a tree view with data but i have some restriction
in fact my relation parent ==> in the database look like this :
01 root
01MM module (child of root)
01MMFR form (child of module)
i can't found a trick to populate my treeview
does anyone has suggestions
thanks in advance and best regards
fady
|
|
|
|
|
Can you please post the schema of the table in the database holding the parent child relationship.
|
|
|
|
|
Lets assume you have all keys in a string array 'keys' and als names in a string array 'names':
HashTable keysToNodesHash = new HashTable();
for (int i = 0; i < keys.Length; i++) {
TreeNodeCollection nodes = treeView1.Nodes;
if (keys[i].Length > 2)
nodes = (TreeNodeCollection)hash[keys[i].SubString(0, keys[i].Length - 2)];
TreeNode newNode = nodes.Add(names[i]);
keysToNodesHash.Add(keys[i], newNodes.Nodes);
}
Haven't tested it but it should give you the basic idea. Note that this will only function properly if the nodes come in the right order (liek in your example). If this isn't true you will have to sort them before this operation.
|
|
|
|
|
Hi all, hope you can help me with a small problem.
I need to add an item to the forms drop down menu that you get when you right click the icon in the top left of the form.
Anyone know how??
Cheers
Kev
|
|
|
|