<tfoot id='Pm6Ii'></tfoot>
<i id='Pm6Ii'><tr id='Pm6Ii'><dt id='Pm6Ii'><q id='Pm6Ii'><span id='Pm6Ii'><b id='Pm6Ii'><form id='Pm6Ii'><ins id='Pm6Ii'></ins><ul id='Pm6Ii'></ul><sub id='Pm6Ii'></sub></form><legend id='Pm6Ii'></legend><bdo id='Pm6Ii'><pre id='Pm6Ii'><center id='Pm6Ii'></center></pre></bdo></b><th id='Pm6Ii'></th></span></q></dt></tr></i><div id='Pm6Ii'><tfoot id='Pm6Ii'></tfoot><dl id='Pm6Ii'><fieldset id='Pm6Ii'></fieldset></dl></div>

<legend id='Pm6Ii'><style id='Pm6Ii'><dir id='Pm6Ii'><q id='Pm6Ii'></q></dir></style></legend>

      • <bdo id='Pm6Ii'></bdo><ul id='Pm6Ii'></ul>

    1. <small id='Pm6Ii'></small><noframes id='Pm6Ii'>

    2. 如何将 DataGridView 行拖放到彼此下方?

      时间:2023-08-25
      1. <i id='IWpSV'><tr id='IWpSV'><dt id='IWpSV'><q id='IWpSV'><span id='IWpSV'><b id='IWpSV'><form id='IWpSV'><ins id='IWpSV'></ins><ul id='IWpSV'></ul><sub id='IWpSV'></sub></form><legend id='IWpSV'></legend><bdo id='IWpSV'><pre id='IWpSV'><center id='IWpSV'></center></pre></bdo></b><th id='IWpSV'></th></span></q></dt></tr></i><div id='IWpSV'><tfoot id='IWpSV'></tfoot><dl id='IWpSV'><fieldset id='IWpSV'></fieldset></dl></div>
        <legend id='IWpSV'><style id='IWpSV'><dir id='IWpSV'><q id='IWpSV'></q></dir></style></legend><tfoot id='IWpSV'></tfoot>
          <tbody id='IWpSV'></tbody>

          <small id='IWpSV'></small><noframes id='IWpSV'>

            <bdo id='IWpSV'></bdo><ul id='IWpSV'></ul>

                本文介绍了如何将 DataGridView 行拖放到彼此下方?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                我有 DataGridView 绑定了一个 List 并且我通过myClass"中的Priority"属性对其进行排序".所以我想把一个DataGridViewRow"拖到某个位置来改变它的Priority"属性.

                I've DataGridView that bound a List<myClass> and i sort it by "Priority" property in "myClass". So I want to drag an "DataGridViewRow" to certain position to change it's "Priority" property.

                我如何拖放"DataGridView 行?.以及如何处理?

                推荐答案

                我找到了这个 代码示例 在 MSDN 上

                I found this code sample on MSDN

                注意以下几点:

                1).DataGridView 属性 AllowDrop 必须设置为 true(默认为 false).

                1). DataGridView property AllowDrop must be set to true (default is false).

                2).当 DataGridView NOT 数据绑定时,下面的示例开箱即用.否则会抛出 InvalidOperationException.如果是数据绑定的,你应该在 DataSource 中操作项目的顺序.

                2). The example below works out of the box when the DataGridView is NOT data-bound. Otherwise it will throw an InvalidOperationException. If it is databound, you should manipulate the order of items in the DataSource.

                private Rectangle dragBoxFromMouseDown;
                private int rowIndexFromMouseDown;
                private int rowIndexOfItemUnderMouseToDrop;
                private void dataGridView1_MouseMove(object sender, MouseEventArgs e)
                {
                    if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
                    {
                        // If the mouse moves outside the rectangle, start the drag.
                        if (dragBoxFromMouseDown != Rectangle.Empty &&
                            !dragBoxFromMouseDown.Contains(e.X, e.Y))
                        {
                
                            // Proceed with the drag and drop, passing in the list item.                    
                            DragDropEffects dropEffect = dataGridView1.DoDragDrop(
                            dataGridView1.Rows[rowIndexFromMouseDown],
                            DragDropEffects.Move);
                        }
                    }
                }
                
                private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
                {
                    // Get the index of the item the mouse is below.
                    rowIndexFromMouseDown = dataGridView1.HitTest(e.X, e.Y).RowIndex;
                if (rowIndexFromMouseDown != -1)
                    {
                        // Remember the point where the mouse down occurred. 
                     // The DragSize indicates the size that the mouse can move 
                     // before a drag event should be started.                
                        Size dragSize = SystemInformation.DragSize;
                
                        // Create a rectangle using the DragSize, with the mouse position being
                        // at the center of the rectangle.
                        dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2),
                                                                       e.Y - (dragSize.Height / 2)),
                                            dragSize);
                    }
                    else
                        // Reset the rectangle if the mouse is not over an item in the ListBox.
                        dragBoxFromMouseDown = Rectangle.Empty;
                }
                
                private void dataGridView1_DragOver(object sender, DragEventArgs e)
                {
                    e.Effect = DragDropEffects.Move;
                }
                
                private void dataGridView1_DragDrop(object sender, DragEventArgs e)
                {
                    // The mouse locations are relative to the screen, so they must be 
                    // converted to client coordinates.
                    Point clientPoint = dataGridView1.PointToClient(new Point(e.X, e.Y));
                
                    // Get the row index of the item the mouse is below. 
                    rowIndexOfItemUnderMouseToDrop =
                        dataGridView1.HitTest(clientPoint.X, clientPoint.Y).RowIndex;
                
                    // If the drag operation was a move then remove and insert the row.
                    if (e.Effect== DragDropEffects.Move)
                    {
                        DataGridViewRow rowToMove = e.Data.GetData(
                            typeof(DataGridViewRow)) as DataGridViewRow;
                        dataGridView1.Rows.RemoveAt(rowIndexFromMouseDown);
                        dataGridView1.Rows.Insert(rowIndexOfItemUnderMouseToDrop, rowToMove);
                
                    }
                }
                

                这篇关于如何将 DataGridView 行拖放到彼此下方?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                <tfoot id='gHYCk'></tfoot>

                <small id='gHYCk'></small><noframes id='gHYCk'>

                    <legend id='gHYCk'><style id='gHYCk'><dir id='gHYCk'><q id='gHYCk'></q></dir></style></legend>
                    • <i id='gHYCk'><tr id='gHYCk'><dt id='gHYCk'><q id='gHYCk'><span id='gHYCk'><b id='gHYCk'><form id='gHYCk'><ins id='gHYCk'></ins><ul id='gHYCk'></ul><sub id='gHYCk'></sub></form><legend id='gHYCk'></legend><bdo id='gHYCk'><pre id='gHYCk'><center id='gHYCk'></center></pre></bdo></b><th id='gHYCk'></th></span></q></dt></tr></i><div id='gHYCk'><tfoot id='gHYCk'></tfoot><dl id='gHYCk'><fieldset id='gHYCk'></fieldset></dl></div>

                        <bdo id='gHYCk'></bdo><ul id='gHYCk'></ul>

                          <tbody id='gHYCk'></tbody>