Недавно добавленная панель инструментов для моего приложения C#, и при щелчке по элементу меню, вызывающему функцию, есть ошибка, но при вызове функции из кнопки Windowsform она отлично работает. Ниже моя функция:ToolstripMenuItem Нажмите, чтобы поднять ошибку?
private void ShowAddDocument(object sender, EventArgs e)
{
foreach (var rr in this.gridEX1.GetDataRows())
{
if (rr.Cells["Select"].Value != null)
{
if (rr.Cells["DocumentNumber"].Value.ToString() != "")
{
rr.BeginEdit();
rr.Cells["Select"].Value = null;
rr.EndEdit();
}
else
{
this.gridEX1.Tag = "SELECTED";
}
}
}
и я использую следующие строки для подключения функции и ToolStrip MenuItem Щелкните событие:
this.userControl11.IssueDocMenuItem.Click += new System.EventHandler(ShowAddDocument);
но когда нажмите на ToolStrip пункт меню это вызовет ошибку: «Object Reference не установлен в экземпляр объекта ". но странная часть, когда я использую WindowsForm кнопку и вызвать функцию следующего кода:
private void button1_Click(object sender, EventArgs e)
{
ShowAddDocument(sender, e);
}
Это мой код работает без ошибок !!!.
И какая строка дана для? Я могу только делать предположения на основе вашего кода. Это либо 'gridEX', что null,' GetDataRows', который возвращает null, что делает 'rr' null, или одна из ячеек извлекается с индексами на' rr', которая равна null ex. 'rr [" Выбрать "]' и 'rr [" DocumentNumber "]' Также см .: http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix- это – Bauss
Нет, моя сетка не равна нулю, и при нажатии кнопки Button1 она работает без ошибок –
Да, потому что среда выполнения, которая была разработана в течение многих лет, внезапно генерирует исключения для нулевых значений случайным образом в таком простом коде? Не звучать грубо или что-то еще, но вы должны * ВСЕГДА * предполагать, что ваш собственный код неверен. Вы пытались проверить значения * ALL * с помощью отладчика, а не только вашей сетки, а также какие значения возвращаются в ваших индексах метода/строки. – Bauss