1

ドラッグ アンド ドロップ機能を作成しようとしていますが、少し問題があります。

私の質問は次のとおりです。

1.) 添付されたコードに関して、Load_Load イベントを最初に呼び出す必要がありますか、またはそれがどのシーケンスにあるかが問題になります (ご覧のとおり、このコード グループで呼び出される最後のイベントです)。

2.) ドラッグ アンド ドロップ イベントは機能しますが、セルまたは列のヘッダーをクリックすると、グリッド 2 で次のメッセージが表示されます。このアイテムを修正するにはどうすればよいですか?

3.) データグリッド 2 では、セル 0 と 1 にセル 0 とセル 1 の番号が付けられます。2 つのセルにカーソルを合わせると、セル 0 の場合は 0-1、セル 1 の場合は 1-2 と表示されます。残りのセルヘッダーには番号が付けられていないか、ツールチップがあります。これはどのように修正されますか?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Suite_Estimation
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void dataGridView1_DragDrop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(typeof(System.String)))
         {
            Point clientPoint = dataGridView1.PointToClient(new Point(e.X, e.Y));               
            dataGridView1.Rows[dataGridView1.HitTest(clientPoint.X,      clientPoint.Y).RowIndex].Cells[dataGridView1.HitTest(clientPoint.X, clientPoint.Y).ColumnIndex].Value = (System.String)e.Data.GetData(typeof(System.String));

         }
}

    private void dataGridView1_DragEnter(object sender, DragEventArgs e)
    {
     if (e.Data.GetDataPresent(typeof(System.String)))
            e.Effect = DragDropEffects.Copy;
        else
            e.Effect = DragDropEffects.None;
    }

    private void dataGridView2_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
    {
     dataGridView2.DoDragDrop(dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(), DragDropEffects.Copy);

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        DataGridViewRow dr = new DataGridViewRow();

        dataGridView2.Rows.Add(5);
        dataGridView2.Rows[0].Cells[0].Value = "00000000";
        dataGridView2.Rows[1].Cells[0].Value = "11111111";
        dataGridView2.Rows[2].Cells[0].Value = "22222222";
        dataGridView2.Rows[3].Cells[0].Value = "33333333";
        dataGridView2.Rows[4].Cells[0].Value = "44444444";
        dataGridView2.Rows[0].HeaderCell.Value = "0 - 1";
        dataGridView2.Rows[1].HeaderCell.Value = "1 - 2";
    }
}

}

4

1 に答える 1