The problem has been solved by using customControl11.BeginEdit(true);
focus Textbox inside datagridview
ankit goel
746
Reputation points
@Jack J Jun , Hi i am trying to set the focus to the very first cell of the DataGridview on form load . when run the code the first cell gets the focus but the problem is that its enter event doesn't fire until i press a key. what i am looking is a way , when it gets focuses it should immediately display a datagridview . for the reference the datagridview inside which a textbox is declared is named as customControl11 (not datagridview1)
private void Form2_Load(object sender, EventArgs e)
{
customControl11.Focus();
customControl11.CurrentCell = customControl11.Rows[0].Cells[0]; // Select the first cell
}
// datagridview events
private void customControl11_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (customControl11.CurrentCell.ColumnIndex == 0) // Assuming the first column has an index of 0
{
TextBox textBox = e.Control as TextBox;
if (textBox != null)
{
textBox.TextChanged += TextBox_TextChanged; // Attach TextChanged event handler
textBox.KeyDown += TextBox_KeyDown; // Attach KeyDown event handler
textBox.Enter += (textBoxSender, textBoxEvent) =>
{
dataGridView1.Visible = true;
// Hide unwanted columns
dataGridView1.Columns["id"].Visible = false;
dataGridView1.Columns["current_balance"].Visible = false;
dataGridView1.Columns["opening_balance"].Visible = false;
};
}
}
}
private void TextBox_TextChanged(object sender, EventArgs e)
{
TextBox textBox = (TextBox)sender;
string searchText = textBox.Text.Trim();
DataView dataView = dataSet.Tables[0].DefaultView;
if (searchText.Length > 0) // strings
{
dataView.RowFilter = $"name LIKE '%{searchText}%'";
if (dataView.Count == 0) // check if no rows match the filter
{
searchText = searchText.Substring(0, searchText.Length - 1);
textBox.Text = searchText;
}
else
{
dataGridView1.DataSource = dataView;
}
}
else
{
dataGridView1.DataSource = dataSet.Tables[0];
}
textBox.Select(textBox.Text.Length, 0); // Set cursor at the end
}
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
TextBox textBox = (TextBox)sender;
//code for results up and down in popup datagridview
if (dataGridView1.CurrentCell == null)
{
return;
}
else
{
int rpos = dataGridView1.CurrentCell.RowIndex;
int cpos = dataGridView1.CurrentCell.ColumnIndex;
switch (e.KeyCode)
{
case Keys.Up:
rpos--;
if (rpos >= 0) dataGridView1.CurrentCell = dataGridView1.Rows[rpos].Cells[cpos];
e.Handled = true;
break;
case Keys.Down:
rpos++;
if (rpos < dataGridView1.Rows.Count) dataGridView1.CurrentCell = dataGridView1.Rows[rpos].Cells[cpos];
e.Handled = true;
break;
case Keys.Enter:
{
if (dataGridView1.Rows.Count > 0)
{
textBox.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
// customControl11.Focus();
// customControl11.CurrentCell = customControl11.Rows[0].Cells[0]; // Select the first cell
dataGridView1.Visible = false;
}
e.Handled = e.SuppressKeyPress = true;
break;
}
}
}
}