【发布时间】:2011-06-22 13:53:38
【问题描述】:
如何在 DataGridView 中的任何指定单元格上设置焦点?我期待一个像 Focus(rowindex,columnindex) 这样简单的方法,但这并不容易。
【问题讨论】:
标签: c# datagridview
如何在 DataGridView 中的任何指定单元格上设置焦点?我期待一个像 Focus(rowindex,columnindex) 这样简单的方法,但这并不容易。
【问题讨论】:
标签: c# datagridview
将当前单元格设置为:
DataGridView1.CurrentCell = DataGridView1.Rows[rowindex].Cells[columnindex]
或
DataGridView1.CurrentCell = DataGridView1.Item("ColumnName", 5)
您可以通过以下方式直接使用 Editing 进行对焦:
dataGridView1.BeginEdit(true)
【讨论】:
您可以通过将 Selected 属性设置为 true 来将 Focus 设置为特定的 Cell
dataGridView1.Rows[rowindex].Cells[columnindex].Selected = true;
为了避免多重选择,只需设置
dataGridView1.MultiSelect = false;
【讨论】:
datagridview 的问题是它会自动选择第一行,所以你想 清除选择
grvPackingList.ClearSelection();
dataGridView1.Rows[rowindex].Cells[columnindex].Selected = true;
否则将无法正常工作
【讨论】:
我遇到了类似的问题。我隐藏了一些列,然后我尝试选择第一行。这并没有真正起作用:
datagridview1.Rows[0].Selected = true;
所以我尝试选择cell[0,0],但也没有成功,因为这个单元格没有显示出来。现在我的最终解决方案运行良好:
datagridview1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
datagridview1.CurrentCell = datagridview1.FirstDisplayedCell;
所以这会选择完整的第一行。
【讨论】:
public void M(){
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
dataGridView1.CurrentCell.Selected = true;
dataGridView1.BeginEdit(true);
}
【讨论】:
只需简单的粘贴并将 Gridcolor() 传递到任何你想要的地方。
Private Sub Gridcolor()
With Me.GridListAll
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.MultiSelect = False
'.DefaultCellStyle.SelectionBackColor = Color.MediumOrchid
End With
End Sub
【讨论】:
在 event form_load (object sender, EventArgs e) 中试试这个
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count1].Cells[0];
此代码将重点放在最后一行和第一个单元格上
【讨论】:
//For me it's the best way to look for the value of a spezific column
int seekValue = 5;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
var columnValue = Convert.ToInt32(row.Cells["ColumnName"].Value);
if (columnValue == seekValue)
{
dataGridView1.CurrentCell = row.Cells[0];
}
}
【讨论】:
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
int row = e.RowIndex;
int col = e.ColumnIndex;
if (row < 0 || col != 3)
return;
if (e.FormattedValue.ToString().Equals(String.Empty))
{
}
else
{
double quantity = 0;
try
{
quantity = Convert.ToDouble(e.FormattedValue.ToString());
if (quantity == 0)
{
MessageBox.Show("The quantity can not be Zero", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
e.Cancel = true;
return;
}
}
catch
{
MessageBox.Show("The quantity should be decimal value.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
e.Cancel = true;
return;
}
}
}
【讨论】:
你可以试试这个 DataGrid:
DataGridCellInfo cellInfo = new DataGridCellInfo(myDataGrid.Items[colRow], myDataGrid.Columns[colNum]);
DataGridCell cellToFocus = (DataGridCell)cellInfo.Column.GetCellContent(cellInfo.Item).Parent;
ViewControlHelper.SetFocus(cellToFocus, e);
【讨论】: