Событие клика ToolStripMenuItem должно возвращать класс - PullRequest
0 голосов
/ 17 февраля 2012

У меня были DataGrid и ContextMenuStrip. Когда я нажимаю SelectMenuStrip в строке, я хочу, чтобы ClickEvent контекстного меню получило все данные в этой строке в классе databean и вернуло этот класс databean, чтобы я мог заполнить данные в другом классе. - Все было хорошо, я определил событие как ниже

private CustomerDataBean toolStripMenuItem1_Click(object sender, EventArgs e)
{
    CustomerDataBean custdatabean = null;

    int rowno = tblcustomerdataview.CurrentCellAddress.Y;
    custdatabean.Customerpk = int.Parse(tblcustomerdataview.Rows[rowno].Cells[0].Value.ToString());

    custdatabean.Contactno = tblcustomerdataview.Rows[rowno].Cells[6].Value.ToString();
        custdatabean.Emailid = tblcustomerdataview.Rows[rowno].Cells[7].Value.ToString();
    custdatabean.Other = tblcustomerdataview.Rows[rowno].Cells[8].Value.ToString();

    return custdatabean;
}

но в designer.cs я получаю сообщение об ошибке в строке:

this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_Click);

Ошибка:

Ошибка 1:
«WindowsFormsApplication3.CustomerDataBean WindowsFormsApplication3.CustomerSearch.toolStripMenuItem1_Click (object, System.EventArgs)» имеет неправильный тип возврата D: \ WindowsFormsApplication3 \ WindowsFormsApplication3 \ Merchandising \ customerSearch.Designer.cs * 83 * NFF 83 NF

Где я сделал что-то не так? Позвольте мне объяснить ситуацию У меня была форма кода задания, где пользователь должен вводить код клиента в поле со списком, если он забывает код клиента, он может использовать кнопку, чтобы перейти к другой форме, называемой customersearch, где есть таблица сетки данных с контекстной меню, которая при нажатии получает все детали выбранной строки элемент данных клиента и вернуть его обратно в первый код формы задания

Ответы [ 3 ]

3 голосов
/ 18 февраля 2012

Ваш код не имеет большого смысла.События щелчка ничего не возвращают (кроме void), они просто запускают процедуру.

Ваше быстрое решение состоит в том, чтобы соответствовать подписи обработчика:

private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
  // do something, don't return anything
}

Что вам нужноdefine - это то, что вы пытаетесь сделать с вашим CustomerDataBean объектом.Если вы просто пытаетесь добавить его в список, добавьте его в список:

private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
  CustomerDataBean custdatabean = new CustomerDataBean();
  // set properties    
  myBeans.Add(custdatabean);
}

Код, который у вас есть, даже не создает объект CustomerDataBean.Это ноль, а затем вы пытаетесь обновить нулевой объект.Это не сработает.

0 голосов
/ 18 февраля 2012

Спросите себя, куда ваше событие click должно возвращать объект?
Какой код будет обрабатывать этот компонент?

Другие объяснили, что не так с вашим событием щелчка.

Вот один из возможных методов:

Пусть ваше событие щелчка вызывает отдельный метод для обработки компонента.Примерно так, возможно:

private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
    CustomerDataBean custdatabean = null;

    int rowno = tblcustomerdataview.CurrentCellAddress.Y;
    custdatabean.Customerpk = int.Parse(tblcustomerdataview.Rows[rowno].Cells[0].Value.ToString());

    custdatabean.Contactno = tblcustomerdataview.Rows[rowno].Cells[6].Value.ToString();
        custdatabean.Emailid = tblcustomerdataview.Rows[rowno].Cells[7].Value.ToString();
    custdatabean.Other = tblcustomerdataview.Rows[rowno].Cells[8].Value.ToString();

    processBean(custdatabean);
}

private void processBean(CustomerDataBean bean)
{
    //Code to process the bean here.
}
0 голосов
/ 17 февраля 2012

Обработчики событий щелчка ToolStripMenuItem должны возвращать void.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...