2017-01-24 3 views
1

У меня есть DataGrid View и код являетсяKeep изменение контекста местоположения с DataGridView прокрутки

DataGridView m_ClientProcessDataGridView = new DataGridView(); 

И у меня есть контекстное меню, и это

ContextMenuStrip contextMenuStripForCells; 

на правой кнопкой мыши на сетке и показывает контекстное меню as

contextMenuStripForCells.Show(m_ClientProcessDataGridView.PointToScreen(e.Location)); 

Проблема заключается в том, что при прокрутке контекстного меню datagridview не перемещается с позиции строки, есть ли у нас идея держать его в движении со свитком?

Или можно отключить прокрутку datagridview, когда контекст открыт?

+1

Что это вы пытаетесь достичь с * перемещения контекстного меню с позицией строки *? Я спрашиваю, потому что ** 1) ** Логика для перемещения контекстного меню может быть затруднена, так как прокрутка становится большой, ** 2) ** Отключение прокрутки обычно выполняется с помощью 'dgv.ScrollBars = ScrollBars.None;', который будет переориентировать сетка обратно в верхнюю (возможно, нежелательно) и ** 3) ** То, что вы действительно хотите, может быть лучше сделано другим способом. – OhBeWise

ответ

1

Свиток по колесу происходит в OnMouseWheel. Вы можете переопределить метод и проверить, если ContextMenuStrip открыт, предотвратить пролистайте:

public class MyDataGridView : DataGridView 
{ 
    protected override void OnMouseWheel(MouseEventArgs e) 
    { 
     if (this.ContextMenuStrip != null && this.ContextMenuStrip.Visible) 
      return; 
     base.OnMouseWheel(e); 
    } 
} 
Смежные вопросы