Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






Получение текущей ячейки в DataGridView при вызове контекстного меню на c#



Постановка задачи. Необходимо, при вызове контекстного меню для DataGridView получить ячейку, над которой оно (меню) было вызвано.

Для чего может понадобиться. Например, мы хотим реализовать возможность редактирования отдельных ячеек строки грида, но при этом предоставлять такую возможность только через новую форму, а не напрямую в самой ячейке грида.

Для этого, вызывая контекстное меню на DataGridView необходимо получить ячейку, непосредственную под контекстным меню, иначе изменения будут происходить с другой, активной в данный момент, ячейкой.

К примеру, если активна ячейка с данными «+38 067 895 96 03», а мы вызываем контекстное меню над ячейкой «Бартоломей Олег», то требуется дальше работать именно с ячейкой «Бартоломей Олег». Задача, я думаю, ясна.

контекстное меню DataGridView

MSDN предлагает довольно простой способ реализации задуманного. Но я немного его переделаю под использование класса Point

Первое, что нам понадобится, это поместить на форму контрол ContextMenuStrip и назначить его в качестве свойства ContextMenuStrip для DataGridView:

MyDataGridView.ContextMenuStrip = MyContextMenuStrip;

Теперь, в данное контекстное меню добавим пункт меню для, скажем, удаления строки.

Дальше, подпишемся на событие CellMouseEnter для нашего грида, предварительно создав на уровне класса объект типа Point:

Point point = new Point();
private void dataGridView_CellMouseEnter(
    object sender, DataGridViewCellEventArgs ee)
{
    
    point.X = ee.ColumnIndex;
    point.Y = ee.RowIndex;
}

А в обработчике события просто устанавливаем свойства X и Y для point.Зачем это надо?

Подписываемся на событие выбора пункта контекстного меню для удаления строки:

private void DeleteThisRowToolStripMenuItem_Click(
    object sender, EventArgs e)
{
    Debitors.Rows[point.Y].Delete();
}

И дело в том, что удалять строку, непосредственно находящуюся под местом вызова контекстного меню, следует по параметру Rows[ee.RowIndex]. Но, как вы понимаете, параметр ee не доступен в методе DeleteThisRowToolStripMenuItem_Click. Потому мы создали переменную point на уровне класса и её область видимости распространяется на метод DeleteThisRowToolStripMenuItem_Click.

ДОПОЛНЕНИЕ.

В статье эффект слежения в DataGridView рассказывается о выполнении эффекта слежения активной ячейки за перемещающимся курсором мыши. В этом случае, получение требуемой строки возможно и так:

private void dataGridView_CellMouseEnter(object sender, 
    DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex > -1 && e.RowIndex > -1)
        dataGridView1.CurrentCell = 
            dataGridView1[e.ColumnIndex, e.RowIndex];
}     

private void DeleteThisRowToolStripMenuItem_Click(
    object sender, EventArgs e)
{
    Debitors.Rows[dataGridView1.CurrentRow.Index].Delete();
}



Больше информации читайте по теме:



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        Неведимка    05.08.2010 19:55:34
        

Спасибо. Супер! как раз в тему. Еще раз спасибо за материал.


        Паша    30.04.2011 11:06:29
        

Огромное спасибо! Материал супер! Хорошая работа! Ждем новых статей!

77.235.125.244




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок