Bagaimana cara menambahkan fungsionalitas drag-and-drop TreeView dalam Visual Basic.Aplikasi NET atau Visual Basic 2005

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 307967 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan cara melakukan drag-and-drop operasi dengan node pohon antara dua TreeView kontrol Visual Basic.Aplikasi NET atau Visual Basic 2005.

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang Anda butuhkan:
  • Visual Basic.NET atau Visual Basic 2005
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan berikut topik:
  • Windows Forms TreeView kontrol
  • Penanganan event Windows Forms

Deskripsi teknik

The TreeView kontrol menyediakan tiga drag-and-drop peristiwa yang Anda harus menangani:
  • ItemDrag: Acara ini dibesarkan dari sumber TreeView kontrol ketika user menjalankan menyeret node pohon. Kapan Hal ini terjadi, hubungi DoDragDrop metode untuk memulai prosedur drag-and-drop.
  • DragEnter: Setelah Anda memulai operasi drag dan drop, Anda harus menangani The DragEnter acara di tujuan TreeView kontrol. Peristiwa ini terjadi ketika pengguna menyeret TreeNode objek dari sumber TreeView mengendalikan ke titik dalam batas-batas tujuan TreeView kontrol. The DragEnter acara memungkinkan tujuan TreeView kontrol untuk menentukan apakah operasi drag berlaku untuk ini kontrol. Kode contoh dalam artikel ini memungkinkan hanya pindah operasi.
  • DragDrop: Acara terakhir untuk menangani ini DragDrop acara tujuan TreeView kontrol. Peristiwa ini terjadi ketika TreeNode objek yang diseret telah dijatuhkan pada tujuan TreeView kontrol. Untuk menangani acara ini, mengambil TreeNode objek, dan menambahkan objek ke tujuan TreeView kontrol. Contoh kode menggunakan Data objek untuk mengambil data.
Kode contoh dalam artikel ini menjamin bahwa TreeNode objek telah menyeret ke tujuan TreeView kontrol. The GetData metode Data objek mengambil node yang diseret dari sumber kontrol. The GetNodeAt metode menentukan di mana node ini dijatuhkan di tujuan kontrol. Setelah Anda menentukan posisi, menambahkan sumber node sebagai anak node tujuan. Karena contoh ini melakukan operasi bergerak, yang terakhir langkah adalah untuk menghapus node sumber dari asli TreeView kontrol.

Langkah-langkah untuk membuat sampel

  1. Membuat aplikasi Windows baru dalam Visual Basic.BERSIH atau pada Visual Basic 2005. Form1 dibuat secara default.
  2. Penggunaan peralatan untuk menambahkan dua TreeView kontrol untuk Form1. TreeView1 dan TreeView2 dibuat secara default.
  3. Agar TreeView kontrol untuk menyeret dan menjatuhkan, mengubah AllowDrop properti kedua TreeView1 dan TreeView2 untuk Benar dalam jendela properti.
  4. Klik dua kali Form1 untuk menghasilkan handler metode untuk Beban acara Form1. Tambahkan kode berikut untuk mengisi dua TreeView kontrol dengan TreeNode objek:
    Private Sub Form1_Load(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ParentNode1 As TreeNode
        Dim ParentNode2 As TreeNode
        ParentNode1 = TreeView1.Nodes.Add("tv1")
        With ParentNode1
            .Nodes.Add("tv1FirstChild")
            .Nodes.Add("tv1SecondChild")
            .Nodes.Add("tv1ThirdChild")
            .Nodes.Add("tv1FourthChild")
            .Expand()
        End With
        ParentNode2 = TreeView2.Nodes.Add("tv2")
        With ParentNode2
            .Nodes.Add("tv2FirstChild")
            .Nodes.Add("tv2SecondChild")
            .Expand()
        End With
    End Sub
    					
  5. Tambahkan penangan metode berikut untuk menangani ItemDrag acara baik TreeView1 atau TreeView2, tergantung pada arah operasi drag. Kode ini memulai operasi bergerak pada item yang sedang diseret.
        Public Sub TreeView_ItemDrag(ByVal sender As Object, _
                                      ByVal e As ItemDragEventArgs) _
                                      Handles TreeView1.ItemDrag, TreeView2.ItemDrag
            DoDragDrop(e.Item, DragDropEffects.Move)
        End Sub
    					
  6. Tambahkan penangan metode berikut untuk menangani DragEnter peristiwa TreeView1 atau TreeView2, tergantung pada arah operasi drag:
        Public Sub TreeView_DragEnter(ByVal sender As Object, _
                                   ByVal e As DragEventArgs) _
                                   Handles TreeView2.DragEnter, TreeView1.DragEnter
            e.Effect = DragDropEffects.Move
        End Sub
    					
  7. Menambahkan metode berikut untuk kelas Form1 jadi itu segera mengikuti metode yang ditambahkan pada langkah sebelumnya:
    Public Sub TreeView_DragDrop(ByVal sender As Object, _
                                  ByVal e As DragEventArgs) _
                                  Handles TreeView2.DragDrop, TreeView1.DragDrop
            Dim NewNode As TreeNode
            If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", False) Then
                Dim pt As Point
                Dim DestinationNode As TreeNode
                pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
                DestinationNode = CType(sender, TreeView).GetNodeAt(pt)
                NewNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), _
                                                TreeNode)
                If Not DestinationNode.TreeView Is NewNode.TreeView Then
                    DestinationNode.Nodes.Add(NewNode.Clone)
                    DestinationNode.Expand()
                    'Remove original node
                    NewNode.Remove()
                End If
            End If
    End Sub
    					
  8. Membangun dan menjalankan proyek. Tarik node dari salah satu TreeView kontrol ke yang lain. Perhatikan bahwa node dihapus dari kontrol sumber dan ditambahkan sebagai anak simpul di tujuan kontrol.

Catatan

Sampel yang tersedia di dalam artikel ini ditujukan untuk demonstrasi tujuan saja; dengan demikian, sampel hanya menggambarkan bagaimana menggunakan The TreeView kontrol dalam skenario yang disederhanakan. Untuk menjaga sampel kecil, beberapa skenario yang tidak dipertimbangkan. Sebagai contoh, Apakah kode memungkinkan Anda untuk melakukan operasi drag-and-drop dengan node yang sama TreeView kontrol.

Kode juga tidak menangani skenario di yang pengguna tidak menjatuhkan objek pada node tertentu di tujuan TreeView kontrol. Untuk menangani skenario ini, periksa jika DestinationNode nol; Jika, Anda dapat menambahkan objek yang sedang diseret ke akar TreeView kontrol, dan seterusnya.

REFERENSI

Untuk informasi lebih lanjut, lihat topik berikut di .NET Framework Software Development Kit (SDK) dokumentasi:
Peristiwa DragEnter
.aspx http://msdn2.Microsoft.com/en-us/library/System.Windows.Forms.Control.dragenter (vs.71)
DragDrop acara
.aspx http://msdn2.Microsoft.com/en-us/library/System.Windows.Forms.Control.DragDrop (vs.71)

Properti

ID Artikel: 307967 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic 2005
Kata kunci: 
kbvs2005applies kbvs2005swept kbhowtomaster kbmt KB307967 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:307967

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com