Từ 1 tới 1 trên tổng số 1 kết quả

Đề tài: Xử lý kéo và thả trong lập trình C#

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    12

    Wink Xử lý kéo và thả trong lập trình C#

    Bạn cần sử dụng tính năng kéo-và-thả để trao đổi thông tin giữa hai điều kiểm (cũng có thể trong các cửa sổ hoặc các ứng dụng khác nhau)
    » Khởi động thao tác kéo-và-thả bằng phương thức DoDragDrop của lớp Control, và đáp ứng cho sự kiện DragEnter và DragDrop.
    Thao tác kéo-và-thả cho phép người dùng chuyển thông tin từ nơi này đến nơi khác bằng cách nhắp vào một item và rê nó đến một vị trí khác. Thao tác kéo-và-thả gồm ba bước cơ bản sau đây:
    1. Người dùng nhắp vào điều kiểm, giữ chuột, và bắt đầu rê. Nếu điều kiểm hỗ trợ tính năng kéo-và-thả, nó sẽ thiết lập riêng một vài thông tin.
    2. Người dùng rê chuột lên một điều kiểm khác. Nếu điều kiểm này chấp nhận kiểu nội dung được rê đến, con trỏ chuột sẽ đổi thành hình mũi tên với trang giấy . Nếu không, con trỏ chuột sẽ đổi thành hình tròn với một vạch thẳng bên trong .
    3. Khi người dùng thả chuột, dữ liệu được gửi đến điều kiểm, và điều kiểm này có thể xử lý nó một cách thích hợp.
    Để hỗ trợ tính năng kéo-và-thả, bạn phải thụ lý các sự kiện DragEnter, DragDrop, và MouseDown. Ví dụ này sử dụng hai TextBox, đây là đoạn mã gắn các phương thức thụ lý sự kiện mà chúng ta sẽ sử dụng:

    Visual C# Code:
    1. this.TextBox2.MouseDown += new MouseEventHandler(this.TextBox_MouseDown);
    2. this.TextBox2.DragDrop += new DragEventHandler(this.TextBox_DragDrop);
    3. this.TextBox2.DragEnter += new DragEventHandler(this.TextBox_DragEnter);
    4.  
    5. this.TextBox1.MouseDown += new MouseEventHandler(this.TextBox_MouseDown);
    6. this.TextBox1.DragDrop += new DragEventHandler(this.TextBox_DragDrop);
    7. this.TextBox1.DragEnter += new DragEventHandler(this.TextBox_DragEnter);

    Để bắt đầu một thao tác kéo-và-thả, bạn hãy gọi phương thức DoDragDrop của điều kiểm nguồn. Lúc này, bạn cần cung cấp dữ liệu và chỉ định kiểu hoạt động sẽ được hỗ trợ (chép, di chuyển…). Ví dụ dưới đây sẽ khởi tạo một thao tác kéo-và-thả khi người dùng nhắp vào một TextBox:

    Visual C# Code:
    1. private void TextBox_MouseDown(object sender,
    2.   System.Windows.Forms.MouseEventArgs e) {
    3.  
    4.     TextBox txt = (TextBox)sender;
    5.     txt.SelectAll();
    6.     txt.DoDragDrop(txt.Text, DragDropEffects.Copy);
    7. }

    Để có thể nhận dữ liệu được rê đến, điều kiểm phải có thuộc tính AllowDrop là true. Điều kiểm này sẽ nhận sự kiện DragEnter khi chuột rê dữ liệu lên nó. Lúc này, bạn có thể kiểm tra dữ liệu đang được rê đến, quyết định xem điều kiểm có thể chấp nhận việc thả hay không, và thiết lập thuộc tính DragEventArgs.Effect tương ứng, như được trình bày trong đoạn mã dưới đây:

    Visual C# Code:
    1. private void TextBox_DragEnter(object sender,
    2. System.Windows.Forms.DragEventArgs e) {
    3.  
    4. if (e.Data.GetDataPresent(DataFormats.Text)) {
    5. e.Effect = DragDropEffects.Copy;
    6. }
    7. e.Effect = DragDropEffects.None;
    8. }
    9. }

    Bước cuối cùng là đáp ứng cho sự kiện DragDrop, sự kiện này xảy ra khi người dùng thả chuột:
    Visual C# Code:
    1. private void TextBox_DragDrop(object sender,
    2.   System.Windows.Forms.DragEventArgs e) {
    3.  
    4.     TextBox txt = (TextBox)sender;
    5.     txt.Text = (string)e.Data.GetData(DataFormats.Text);
    6. }

    Sử dụng các đoạn mã trên, bạn có thể tạo một ứng dụng thử nghiệm tính năng kéo-và-thả đơn giản, cho phép text được rê từ TextBox này đến TextBox khác. Bạn cũng có thể rê text từ một ứng dụng khác và thả nó vào một trong hai TextBox này @
    Đã được chỉnh sửa lần cuối bởi ZCoder87 : 04-11-2008 lúc 11:39 AM. Lý do: Đặt tag code=C#

Các đề tài tương tự

  1. Làm Chữ chạy trên form C# như thẻ <marquee> trong HTML thế nào?
    Gửi bởi magnet241 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 05-04-2012, 11:55 AM
  2. In thẻ,hóa đơn từ các textbox,combobox,datetimepicker trong form C# như thế nào?
    Gửi bởi snoit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 04-04-2012, 03:13 PM
  3. Game Tạo Form trong suốt trong C# tựa game Thần Võ như thế nào?
    Gửi bởi tocvang_pro trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 21-09-2011, 04:21 PM
  4. Sử lí như thế nào khi nhập rất chậm trong trình xoạn thảo trong devC
    Gửi bởi toansvcn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 23-05-2011, 10:04 PM
  5. Code tìm kiếm trong cây nhị phân trong C++. Lỗi chỉ tìm được từ đầu tiên trong file thôi sửa thế nào?
    Gửi bởi elvish trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 11-04-2010, 09:43 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn