Исправить исключение NullReferenceException можно с помощью Null-условных операторов в c # 6 и написать меньше кода для обработки нулевых проверок.
Он используется для проверки нуля до выполнения доступа к члену (?. ) или index (? [).
Пример
var name = p?.Spouse?.FirstName;
эквивалентен:
if (p != null)
{
if (p.Spouse != null)
{
name = p.Spouse.FirstName;
}
}
В результате имя будет нулевым когда p равно null или когда p.Spouse имеет значение null.
В противном случае имени переменной будет присвоено значение p.Spouse.FirstName.
Для получения дополнительной информации: Операторы с нулевым условием
Установите текущую ячейку следующим образом:
DataGridView1.CurrentCell = DataGridView1.Rows[rowindex].Cells[columnindex]
или
DataGridView1.CurrentCell = DataGridView1.Item("ColumnName", 5)
, и вы можете напрямую сфокусироваться с помощью Редактирования:
dataGridView1.BeginEdit(true)
в событии form_load (отправитель объекта, EventArgs e) попробуйте это
dataGridView1.CurrentCell = dataGridView1.Rows [dataGridView1.Rows.Count1] .Cells [0];
this код делает фокус на последней строке и первой ячейке
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;
}
}
}
вы можете установить Focus
на конкретный Cell
, установив для свойства Selected
значение true
dataGridView1.Rows[rowindex].Cells[columnindex].Selected = true;
, чтобы избежать установки только множественного выбора
dataGridView1.MultiSelect = false;
//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];
}
}
У меня была аналогичная проблема. Я спрятал несколько столбцов, а затем попытался выбрать первую строку. Это действительно не работает:
datagridview1.Rows[0].Selected = true;
Поэтому я попытался выбрать cell[0,0]
, но он также не работал, потому что эта ячейка не отображалась. Теперь мое окончательное решение работает очень хорошо:
datagridview1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
datagridview1.CurrentCell = datagridview1.FirstDisplayedCell;
Итак, это выбирает полную первую строку.
проблема с datagridview заключается в том, что она автоматически выбирает первую строку, поэтому вы хотите очистить выделение с помощью
grvPackingList.ClearSelection();
dataGridView1.Rows[rowindex].Cells[columnindex].Selected = true;
, иначе это не сработает
DataGridView1.CurrentCell = DataGridView1.Item ("ColumnName", 5)
public void M(){
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
dataGridView1.CurrentCell.Selected = true;
dataGridView1.BeginEdit(true);
}
Просто Простой и Цвет сетки пропуска () где угодно.
Private Sub Gridcolor()
With Me.GridListAll
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.MultiSelect = False
'.DefaultCellStyle.SelectionBackColor = Color.MediumOrchid
End With
End Sub