C # .NET DataGridView включить клик ячейки только для определенных столбцов - PullRequest
0 голосов
/ 13 октября 2009

У меня мало опыта в C # .NET, и вот что я получил до сих пор:

Я создал DataGridView, который связан с ObjectDataSource (то есть общим списком).

Хотя я могу эффективно использовать событие CellClick объекта DataGridView и соответствующий ему интерфейс делегата (DataGridViewCellEventHandler), чтобы хорошо выполнять свою бизнес-логику, я по-прежнему не в восторге от общей логики.

По сути, недостатком вышеупомянутого подхода является то, что для некоторых определенных столбцов нет необходимости связывать событие CellClick с ним. Они просто отображают информацию, а не пытаются слушать на некоторые события CellClick.

Я пытался добиться этого довольно долго. Я пытался отключить возможность нажатия на такие столбцы, но безуспешно ...

Есть ли хороший способ обойти эту проблему?

Я действительно не хочу проверять, каково значение columnIndex в моих функциях-обработчиках делегатов, и затем действовать соответствующим образом. По сути, если CellClick не будет запущен в первую очередь, это было бы отличным решением.

Большое спасибо заранее!

Ответы [ 2 ]

4 голосов
/ 13 октября 2009

@ Йен, не совсем верно ..... Если вы действительно не хотите заниматься фильтрацией, что, честно говоря, не так уж важно. Вы всегда можете создать свой собственный DataGridView и переопределить событие OnCellClick. Чтобы сделать его еще проще, вы можете установить столбцы, для которых вы не хотите вызывать событие во время разработки, равными ReadOnly и проверить это условие перед вызовом события.

Пример:

public class MyDataGridView : DataGridView
{
     public MyDataGridView()
     {
     }

     protected override void OnCellClick(DataGridViewCellEventArgs e)
     {
          if (!Columns[e.ColumnIndex].ReadOnly)
          {
               base.OnCellClick(e);
          }
     }
}
0 голосов
/ 13 октября 2009

Я действительно не хочу проверять, каково значение columnIndex в моих функциях-обработчиках делегатов, и затем действовать соответственно.

К сожалению, у вас нет выбора, поскольку DataGridView не отображает события для своих DataGridViewColumn объектов. Почему это поведение проблематично для вас?

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