как отключить сортировку в datagridview?

<p>как отключить сортировку в <code>datagridview</code>? мне нужно отключить сортировку заголовка <code>datagridview</code>.</p>

<pre><code>foreach (datagridviewcolumn column in datagridview.columns) { column.sortmode = datagridviewcolumnsortmode.notsortable; } </code></pre>

<p>если вы хотите статически сделать столбцы не сортируемыми. вы можете сделать это так</p><ol> <li>откройте окна editcolumns элемента управления datagridview 2. выберите столбец, который вы хотите сделать не сортируемым, на левой боковой панели.</li> <li>на правой панели свойств выберите свойство «режим сортировки» и выберите «не сортируется».</li> </ol>

<p>используйте linq:</p><pre><code>datagridview1.columns.cast<datagridviewcolumn>().tolist().foreach(f => f.sortmode = datagridviewcolumnsortmode.notsortable); </code></pre>

<p>это очень просто:</p><pre><code>foreach (datagridviewcolumn dgvc in datagridview1.columns) { dgvc.sortmode = datagridviewcolumnsortmode.notsortable; } </code></pre>

<p>вы можете отключить его в событии columnadded:</p><pre><code>private void datagridview1\_columnadded(object sender, datagridviewcolumneventargs e) { datagridview1.columns[e.column.index].sortmode = datagridviewcolumnsortmode.notsortable; } </code></pre>

<p>для расширения функциональности управления, подобного этой, мне нравится использовать методы расширения, чтобы их можно было легко использовать повторно. вот начальный файл расширений, который содержит расширение для отключения сортировки в представлении данных.</p><p>чтобы использовать его, просто включите его в свой проект и позвоните так</p><p>mydatagridview.disablesorting () </p><p>в моем случае я добавил эту строку кода в обработчик событий databindingcomplete datagridview, где я хотел отключить сортировку</p><pre><code>imports system.componentmodel imports system.reflection imports system.runtime.compilerservices imports system.windows.forms public module extensions <extension()> public sub disablesorting(datagrid as datagridview) for index = 0 to datagrid.columns.count - 1 datagrid.columns(index).sortmode = datagridviewcolumnsortmode.notsortable next end sub end module </code></pre>

<pre><code>private void datagridview1\_databindingcomplete(object sender, datagridviewbindingcompleteeventargs e) { for (int i = 0; i < datagridview1.columns.count; i++) { datagridview1.columns[i].sortmode = datagridviewcolumnsortmode.notsortable; } } </code></pre>

<p>если вы можете расширить datagridview, вы можете переопределить метод <code>sort</code> с пустым. это полностью отключает сортировку для datagridview.</p><pre><code>public override void sort(datagridviewcolumn datagridviewcolumn, listsortdirection direction) { //base.sort(datagridviewcolumn, direction); } </code></pre><p>примечание. вы даже не можете программно сортировать столбцы.</p>