小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C#如何實(shí)現(xiàn)DataGridView到DataGridView的拖拽

 牛人的尾巴 2015-10-28

今天工作中遇到一個(gè)問題,需要將一個(gè)DataGridView中的某一行拖拽到另一個(gè)DataGridView中,在網(wǎng)上搜了一遍,大多是從DataGridView拖拽到TextBox等控件,沒有拖拽到
DataGridView中的。拖拽到TextBox很容易,但拖拽到DataGridView就有一個(gè)問題:如何決定拖拽到DataGridView中的哪一個(gè)Cell?
為此研究了兩個(gè)小時(shí),終于找到了答案。
例如要實(shí)現(xiàn)從gridSource到gridTarget的拖拽,需要一個(gè)設(shè)置和三個(gè)事件:
1、設(shè)置gridTarget的屬性AllowDrop為True
2、實(shí)現(xiàn)gridSource的MouseDown事件,在這里進(jìn)行要拖拽的Cell內(nèi)容的保存,保存到剪貼板。
3、實(shí)現(xiàn)gridTarget的DragDrop和DragEnter事件,DragDrop事件中的一個(gè)難點(diǎn)就是決定拖拽到哪一個(gè)Cell

代碼如下:

gridSource的MouseDown事件:

復(fù)制代碼
Code
private void gridSource_MouseDown(object sender, MouseEventArgs e)
{
     if (e.Button == MouseButtons.Left)
     {
          DataGridView.HitTestInfo info = this.gridSource.HitTest(e.X, e.Y);
          if (info.RowIndex >= 0)
          {
              if (info.RowIndex >= 0 && info.ColumnIndex >= 0)
              {
                  string text = (String)this.gridSource.Rows[info.RowIndex].Cells[info.ColumnIndex].Value;
                   if (text != null)
                    {
                        this.gridSource.DoDragDrop(text, DragDropEffects.Copy);
                     }
               }
           }
       }
 }
復(fù)制代碼

 

gridTarget的DragDrop事件:

復(fù)制代碼
Code
private void gridTarget_DragDrop(object sender, DragEventArgs e)
{
       //得到要拖拽到的位置
     Point p = this.gridTarget.PointToClient(new Point(e.X, e.Y));
      DataGridView.HitTestInfo hit = this.gridTarget.HitTest(p.X, p.Y);
      if (hit.Type == DataGridViewHitTestType.Cell)
      {
            DataGridViewCell clickedCell = this.gridTarget.Rows[hit.RowIndex].Cells[hit.ColumnIndex];
            clickedCell.Value = (System.String)e.Data.GetData(typeof(System.String));
       //如果只想允許拖拽到某一個(gè)特定列,比如Target Field Expression,則先要判斷列是否為Target Field Expression,如下:
             
//if (0 == string.Compare(clickedCell.OwningColumn.Name, "Target Field Expression"))
             
//{
             
//    clickedCell.Value = (System.String)e.Data.GetData(typeof(System.String));
             
//}
       }
}
復(fù)制代碼

 

gridTarget的DragEnter事件:

Code
private void gridTarget_DragEnter(object sender, DragEventArgs e)
{
     e.Effect = DragDropEffects.Copy;
}
分類: 02 C#/.NET

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多