Tôi có ứng dụng winforms sử dụng UserControl. Công việc của người dùng điều khiển là thu thập một tập tin mà người dùng sử dụng trên Windows Explorer, mở tập tin, xác định loại và xử lý nó cho phù hợp.Tại sao DragDrop không hoạt động trong VS2010?
Điều khiển này hoạt động PERFECTLY trong Visual Studio 2008 Pro. Tôi nâng cấp lên VS 2010 Pro, và bây giờ, nó không hoạt động. Có một lá cờ hoặc một tài sản đã thay đổi mà tôi nên biết?
Tôi đã thực hiện bản demo nhanh để kiểm tra. Bản trình diễn này hoạt động hoàn hảo vào năm 2008, nhưng không hoạt động vào năm 2010.
Thiết lập: Tạo dự án biểu mẫu thắng mới. Thêm điều khiển người dùng. Đặt mã sau trong phần mã của điều khiển người dùng. (biên dịch để điều khiển người dùng xuất hiện trong hộp công cụ) Thêm điều khiển người dùng vào biểu mẫu. Chạy chương trình và kéo bất kỳ tệp nào từ cửa sổ lên biểu mẫu. Nếu nó hoạt động, khu vực điều khiển người dùng sẽ thay đổi màu sắc.
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
this.AllowDrop = true;
this.DragDrop += new DragEventHandler(UserControl1_DragDrop);
this.DragEnter += new DragEventHandler(UserControl1_DragEnter);
this.DragLeave += new EventHandler(UserControl1_DragLeave);
}
void UserControl1_DragLeave(object sender, EventArgs e)
{
this.BackColor = Color.FromName("Control");
}
void UserControl1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
this.BackColor = Color.Blue;
}
else
{
e.Effect = DragDropEffects.None;
}
}
void UserControl1_DragDrop(object sender, DragEventArgs e)
{
this.BackColor = Color.Yellow;
}
}
Tôi sẵn sàng giải thích hoặc khắc phục sự cố mà các bạn có thể nghĩ ra!
UPDATE:
Tôi đã thử nghiệm sử dụng các ý kiến dưới đây. STILL không hoạt động. Tuy nhiên, tôi đã lưu ý rằng nó chỉ thất bại trong khi trong môi trường phát triển. Khi tôi vào thư mục bin và khởi chạy chương trình theo cách thủ công, nó hoạt động tốt. Nó không hoạt động khi tôi đang ở trong môi trường phát triển, điều này làm cho việc gỡ lỗi trở nên khó khăn một chút. Vẫn đang tìm kiếm bản sửa lỗi lớn.
Chuyển từ màu xám sang màu xanh khi di chuột và màu vàng khi thả trong VS 2010 pro cho tôi. (Chỉ cần FYI). – KreepN
Đó là những gì nó NÊN làm. Rất kỳ quặc !!! Tôi tự hỏi nếu VS2010 của tôi là bánh mì nướng hoặc một cái gì đó. Mọi thứ khác hoạt động hoàn hảo. Cảm ơn bạn đã thử nghiệm cho tôi. Bạn có làm bất cứ điều gì khác hơn là thiết lập ở trên không? Bất kỳ thiết bị chuyển mạch/cờ/thuộc tính nào khác được bật? – Jerry
Tôi dán đoạn mã nguyên bản vào một điều khiển người dùng, thêm nó vào một bảng điều khiển nằm trên một biểu mẫu trên form_load, và sau đó kiểm tra nó. Không có thuộc tính nào được chạm vào. Nó có thể là bạn thêm nó từ hộp công cụ khiến nó hoạt động hài hước. Như tôi đã đề cập, tôi đã thêm nó theo chương trình: UserControl1 uc1 = new UserControl1(); this.panel1.Controls.Add (uc1); – KreepN