آموزش Drag و Drop در برنامه نویسی سی شارپ
آموزش Drag و Drop در برنامه نویسی سی شارپ
برای این که بتوانید فایلی را به یک کنترل در برنامه Drag کنید اول باید خاصیت AllowDrop آن را true کنید.
در اینجا یک Panel قرار دادریم و خاصیت AllowDrop آن را True کردیم.
در رویداد های Panel از DragEnter و DragDrop استفاده میکنیم.
DragEnter : برای زمانی است که فایل را Drag کرده ایم ، ماوس روی کنترل قرار دارد ولی هنوز دکمه ماوس را رها نکرده ایم و در این رویداد مشخص میکنیم که شکل ماوس به چه شکلی عوض شود.
DragDrop : برای زمانی است که فایل را Drag کرده ایم ، ماوس رو کنترل قرار دارد و دکمه ماوس را رها کرده ایم
1 2 3 4 | private void panel1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Copy; } |
کد بالا شکل ماوس را تغییر میدهد.
حال در رویداد DragDrop باید کدی بنویسیم که آدرس تمام فایل های Drag شده داخل کنترل را به آرایه ای از string ها بریزد.
1 2 3 4 | private void panel1_DragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); } |
DataFormats.FileDrop نوع فایل را مشخص میکند که FileDrop شامل همه فایل ها میشود. مثلا اگر نوع آن را Text بگذارید فقط فایل متنی قبول میکند.
حالا میخواهیم چند کار روی این فایل هایمان انجام دهیم. مانند گرفتن نام و پسوند.
برای این کار باید از کلاس Path استفاده کنیم و برای این کار باید از فضای نامی System.IO استفاده کنید.
برای گرفتن نام فایل بدون پسوند :
1 | System.IO.Path.GetFileNameWithoutExtension(); |
برای گرفتن پسوند فایل :
1 | System.IO.Path.GetExtension() |
و کد زیر نام و پسوند تمام فایل هایی که Drag کردیم را در MessageBox نشان میدهیم.
1 2 3 4 5 | foreach (var item in files) { string message = string.Format("file name : {0} , file extension : {1}", System.IO.Path.GetFileNameWithoutExtension(item),System.IO.Path.GetExtension(item)); MessageBox.Show(message); } |
شاید در محیط ویندوز به این مشکل برخورده اید که نمیتوانید از روش پارامتری در MessageBox استفاده کنید.
در محیط کنسول میتوانیم از روش پارامتری برای نشان دادن پیام استفاده کنیم ولی در محیط ویندوز باید از string.Format استفاده کنیم.
امیدوارم این آموزش به شما کمک کرده باشد
موفق باشید.
ممنونتم