form1.h
来自「《VC++2005编程实例》第一章的源代码」· C头文件 代码 · 共 210 行
H
210 行
#pragma once
namespace Example {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Form1 摘要
///
/// 警告: 如果更改此类的名称,则需要更改
/// 与此类所依赖的所有 .resx 文件关联的托管资源编译器工具的
/// “资源文件名”属性。否则,
/// 设计器将不能与此窗体的关联
/// 本地化资源正确交互。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: 在此处添加构造函数代码
//
}
protected:
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::TreeView^ treeView1;
protected:
private:
/// <summary>
/// 必需的设计器变量。
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
void InitializeComponent(void)
{
this->treeView1 = (gcnew System::Windows::Forms::TreeView());
this->SuspendLayout();
//
// treeView1
//
this->treeView1->AllowDrop = true;
this->treeView1->Dock = System::Windows::Forms::DockStyle::Fill;
this->treeView1->Location = System::Drawing::Point(0, 0);
this->treeView1->Name = L"treeView1";
this->treeView1->Size = System::Drawing::Size(390, 214);
this->treeView1->TabIndex = 0;
this->treeView1->DragDrop += gcnew System::Windows::Forms::DragEventHandler(this, &Form1::treeView1_DragDrop);
this->treeView1->DragOver += gcnew System::Windows::Forms::DragEventHandler(this, &Form1::treeView1_DragOver);
this->treeView1->DragEnter += gcnew System::Windows::Forms::DragEventHandler(this, &Form1::treeView1_DragEnter);
this->treeView1->ItemDrag += gcnew System::Windows::Forms::ItemDragEventHandler(this, &Form1::treeView1_ItemDrag);
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(390, 214);
this->Controls->Add(this->treeView1);
this->Name = L"Form1";
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
this->Text = L"演示在控件中实现拖放功能";
this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
this->ResumeLayout(false);
}
#pragma endregion
//保存前一个鼠标进入的节点
private: TreeNode^ MyOldNode;
//添加树形视图子节点
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
System::Windows::Forms::TreeNode^ treeNode1 = (gcnew System::Windows::Forms::TreeNode(L"东城区"));
System::Windows::Forms::TreeNode^ treeNode2 = (gcnew System::Windows::Forms::TreeNode(L"西城区"));
System::Windows::Forms::TreeNode^ treeNode3 = (gcnew System::Windows::Forms::TreeNode(L"朝阳区"));
System::Windows::Forms::TreeNode^ treeNode4 = (gcnew System::Windows::Forms::TreeNode(L"北京市", gcnew cli::array< System::Windows::Forms::TreeNode^ >(3) {treeNode1,
treeNode2, treeNode3}));
System::Windows::Forms::TreeNode^ treeNode5 = (gcnew System::Windows::Forms::TreeNode(L"上海市"));
System::Windows::Forms::TreeNode^ treeNode6 = (gcnew System::Windows::Forms::TreeNode(L"天津市"));
System::Windows::Forms::TreeNode^ treeNode7 = (gcnew System::Windows::Forms::TreeNode(L"渝中区"));
System::Windows::Forms::TreeNode^ treeNode8 = (gcnew System::Windows::Forms::TreeNode(L"凤城街道"));
System::Windows::Forms::TreeNode^ treeNode9 = (gcnew System::Windows::Forms::TreeNode(L"晏家街道"));
System::Windows::Forms::TreeNode^ treeNode10 = (gcnew System::Windows::Forms::TreeNode(L"长寿湖镇"));
System::Windows::Forms::TreeNode^ treeNode11 = (gcnew System::Windows::Forms::TreeNode(L"长寿区", gcnew cli::array< System::Windows::Forms::TreeNode^ >(3) {treeNode8,
treeNode9, treeNode10}));
System::Windows::Forms::TreeNode^ treeNode12 = (gcnew System::Windows::Forms::TreeNode(L"渝北区"));
System::Windows::Forms::TreeNode^ treeNode13 = (gcnew System::Windows::Forms::TreeNode(L"江北区"));
System::Windows::Forms::TreeNode^ treeNode14 = (gcnew System::Windows::Forms::TreeNode(L"重庆市", gcnew cli::array< System::Windows::Forms::TreeNode^ >(4) {treeNode7,
treeNode11, treeNode12, treeNode13}));
System::Windows::Forms::TreeNode^ treeNode15 = (gcnew System::Windows::Forms::TreeNode(L"中国直辖市", gcnew cli::array< System::Windows::Forms::TreeNode^ >(4) {treeNode4,
treeNode5, treeNode6, treeNode14}));
this->treeView1->Name = L"treeView1";
treeNode1->Name = L"节点9";
treeNode1->Text = L"东城区";
treeNode2->Name = L"节点10";
treeNode2->Text = L"西城区";
treeNode3->Name = L"节点11";
treeNode3->Text = L"朝阳区";
treeNode4->Name = L"节点1";
treeNode4->Text = L"北京市";
treeNode5->Name = L"节点2";
treeNode5->Text = L"上海市";
treeNode6->Name = L"节点3";
treeNode6->Text = L"天津市";
treeNode7->Name = L"节点5";
treeNode7->Text = L"渝中区";
treeNode8->Name = L"节点12";
treeNode8->Text = L"凤城街道";
treeNode9->Name = L"节点13";
treeNode9->Text = L"晏家街道";
treeNode10->Name = L"节点14";
treeNode10->Text = L"长寿湖镇";
treeNode11->Name = L"节点6";
treeNode11->Text = L"长寿区";
treeNode12->Name = L"节点7";
treeNode12->Text = L"渝北区";
treeNode13->Name = L"节点8";
treeNode13->Text = L"江北区";
treeNode14->Name = L"节点4";
treeNode14->Text = L"重庆市";
treeNode15->Name = L"节点0";
treeNode15->Text = L"中国直辖市";
this->treeView1->Nodes->AddRange(gcnew cli::array< System::Windows::Forms::TreeNode^ >(1) {treeNode15});
this->treeView1->ExpandAll();
}
//处理 treeView1控件ItemDrag事件
private: System::Void treeView1_ItemDrag(System::Object^ sender, System::Windows::Forms::ItemDragEventArgs^ e) {
//设置拖放类型为移动
this->treeView1->DoDragDrop(e->Item ,System::Windows::Forms::DragDropEffects::Move );
}
//处理 treeView1控件DragEnter事件
private: System::Void treeView1_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
TreeNode^ MyType=gcnew TreeNode;
//获取节点的数据内容
System::Object^ MyData = e->Data->GetData(MyType->GetType());
//如果节点有数据,拖放目标允许移动
if (MyData!=nullptr)
{
e->Effect = System::Windows::Forms::DragDropEffects::Move ;
}
else
{
e->Effect = System::Windows::Forms::DragDropEffects::None;
}
TreeView^ MyTreeView=(TreeView^)sender;
TreeNode^ MyNode = MyTreeView->GetNodeAt(treeView1->PointToClient (Point(e->X ,e->Y)));
if (MyNode!=nullptr)
{ //改变进入节点的背景色
MyNode->BackColor = Color::Blue ;
//保存此节点,进入下一个时还原背景色
MyOldNode = MyNode;
}
}
//处理 treeView1控件DragOver事件
private: System::Void treeView1_DragOver(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
//修改鼠标进入节点的背景色,还原上一个节点的背景色
TreeView^ MyTreeView = (TreeView^)sender;
TreeNode^ MyNode = MyTreeView->GetNodeAt (treeView1->PointToClient (Point(e->X ,e->Y)));
if ((MyNode != nullptr)&&(MyNode!=MyOldNode))
{
MyOldNode->BackColor = Color::White ;
MyNode->BackColor = Color::Blue ;
MyOldNode = MyNode;
}
}
//处理 treeView1控件DragDrop事件
private: System::Void treeView1_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e) {
TreeNode^ MyType=gcnew TreeNode;
//获取节点的数据内容
TreeNode^ MyNode =(TreeNode^)e->Data->GetData(MyType->GetType());
TreeView^ MyTreeView = (TreeView^)sender;
//得到当前鼠标进入的节点
TreeNode^ MyTargetNode = MyTreeView->GetNodeAt(treeView1->PointToClient (Point(e->X ,e->Y)));
if (MyTargetNode!= nullptr)
{
TreeNode^ MyTargetParent = MyTargetNode->Parent ;
//删除拖放的节点
MyNode->Remove ();
//添加到目标节点
MyTargetNode->Nodes->Add(MyNode);
MyTargetNode->BackColor = Color::White ;
MyTreeView->SelectedNode = MyTargetNode;
}
}
};
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?