DataGridView Sortierung geht nicht mit DragDrop

10/09/2009 - 11:30 von Robert Oberholzer | Report spam
Hallo NG,

Habe folgendes Problem:
Wenn ich ein Datagridview mit Drag and Drop funktionalitàt versehe,
so ist die Sortierung der Spalten nicht mehr aktiv.
Auch der ColumnHeaderMouseClick und MouseUp Event werden nicht mehr
ausgeführt.
Kann mir jemand sagen wo ich den Fehler mache?

Hier mein Code:

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

namespace TestApp
{
public partial class Form1 : Form
{
BindingSource bs;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();

DataColumn dc;
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "Vorname";
dt.Columns.Add(dc);
dc = new DataColumn();
dc.DataType = Type.GetType("System.String");
dc.ColumnName = "Nachname";
dt.Columns.Add(dc);
dc = new DataColumn();

DataRow dr = dt.NewRow();
dr["Vorname"] = "Rolf";
dr["Nachname"] = "Kuster";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Vorname"] = "Maria";
dr["Nachname"] = "Hofer";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Vorname"] = "Susanne";
dr["Nachname"] = "Klee";
dt.Rows.Add(dr);

bs = new BindingSource();
bs.DataSource = dt;
dataGridView1.DataSource = bs;
}

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
Console.WriteLine("MouseDown");
string strText = "";
try
{
DataRowView drv = (DataRowView)bs.Current;
strText = drv["Vorname"].ToString();
strText += Environment.NewLine;
strText += drv["Nachname"].ToString();
dataGridView1.DoDragDrop(strText, DragDropEffects.Copy |
DragDropEffects.Move);
}
catch
{ }

}

private void dataGridView1_ColumnHeaderMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
Console.WriteLine("ColumnHeaderMouseClick");
}

private void dataGridView1_MouseUp(object sender, MouseEventArgs e)
{
Console.WriteLine("MouseUp");
}
}
}
 

Lesen sie die antworten

#1 Frank Dzaebel
10/09/2009 - 19:30 | Warnen spam
Hallo Robert,

Auch der ColumnHeaderMouseClick und MouseUp Event
werden nicht mehr ausgeführt.



Was typischerweise sehr oft in DragDrop-Szenarien
vergessen wird, ist das Setzen von "AllowDrop" des
gewünschten Controls auf true.
Bei Dir also: this.dataGridView1.AllowDrop = true;
Das ist allerdings noch nicht der Grund.
Schau Dir mal folgendes an:

[DataGridView Drag Drop]
http://dzaebel.net/DataGridViewDragDrop.htm

In obigen Beispiel funktioniert das Sortieren über
die ColumnHeader dann auch.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen