DoDragDrop metodu
Kopyalama için kullanılır. Elimizde bir DataGridView olsun. Seçili hücrenin metni şöyle kopyalanır. Önce kaynak nesnenin DragDrop metodu tetiklenir.
Data Alanı
IDataObject tipindedir. Şöyle yaparız.
Kopyalama için kullanılır. Elimizde bir DataGridView olsun. Seçili hücrenin metni şöyle kopyalanır. Önce kaynak nesnenin DragDrop metodu tetiklenir.
void dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
dgv.DoDragDrop(dgv.SelectedRows[0].Cells[0].Value, DragDropEffects.Copy);
}
Şöyle yaparız.protected override void OnMouseLeave(EventArgs e)
{
DoDragDrop("Test Data", DragDropEffects.All);
base.OnMouseLeave(e);
}
Drag Drop Event'leri
DragEnter
Handler metodunun iskeleti şöyledir.
protected override void OnDragEnter(DragEventArgs e)
{
base.OnDragEnter(e);
...
}
Süreklenen nesneyi kabul edip etmeyeceğimiz belirtmek için şöyle yaparız.
protected void OnDragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
}
DragDrop
Handler metodunun iskeleti şöyledir.
protected override void OnDrop(DragEventArgs e)
{
base.OnDrop(e);
...
}
Sürüklenip bırakılan nesneyi kabul edip etmeyeceğimiz belirtmek için şöyle yaparız.
protected void OnDrop(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] values = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (var v in values)
{
var info = new FileInfo(v);
if(info.Extension.ToLower() == ".exe")
{
...
}
}
}
}
Diğer metodları şöyle kodlayabiliriz.
protected override void OnDragOver(DragEventArgs e)
{
base.OnDragOver(e);
...
}
protected override void OnDragLeave(DragEventArgs e)
{
base.OnDragLeave(e);
...
}
DragEventsArgs SınıfıData Alanı
IDataObject tipindedir. Şöyle yaparız.
e.Data
Effect Alanı
Şöyle yaparız.
GetData metodu
Genellikle bırakma yani OnDragDrop içinde kullanılır. Text olarak elde etmek için şöyle yaparız.
Şöyle yaparız.
protected override void OnDragOver(DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(string)))
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
base.OnDragOver(e);
}
IDataObject ArayüzüGetData metodu
Genellikle bırakma yani OnDragDrop içinde kullanılır. Text olarak elde etmek için şöyle yaparız.
DragEventArgs e = ...;
e.Data.GetData(DataFormats.Text.ToString();
Şöyle de yapabiliriz.string data = (string)e.Data.GetData(typeof(string));
GetDataPresent metoduŞöyle yaparız.
void listBox_map_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.StringFormat))
{..}
}
Şöyle de yapabiliriz.if (!e.Data.GetDataPresent(typeof(string))) {...};
Hiç yorum yok:
Yorum Gönder