控件间托拽功能制作全过程Word格式文档下载.docx

上传人:b****6 文档编号:19165364 上传时间:2023-01-04 格式:DOCX 页数:16 大小:89.72KB
下载 相关 举报
控件间托拽功能制作全过程Word格式文档下载.docx_第1页
第1页 / 共16页
控件间托拽功能制作全过程Word格式文档下载.docx_第2页
第2页 / 共16页
控件间托拽功能制作全过程Word格式文档下载.docx_第3页
第3页 / 共16页
控件间托拽功能制作全过程Word格式文档下载.docx_第4页
第4页 / 共16页
控件间托拽功能制作全过程Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

控件间托拽功能制作全过程Word格式文档下载.docx

《控件间托拽功能制作全过程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《控件间托拽功能制作全过程Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

控件间托拽功能制作全过程Word格式文档下载.docx

publicForm1()

{

InitializeComponent();

}

privatevoidForm1_Load(objectsender,EventArgse)

//这里是设置两个时间控件的显示格式.我们要精确选择.所以要同时显示日期和时间

DateTimedt=DateTime.Now;

intdays=DateTime.DaysInMonth(dt.Year,dt.Month);

dateTimePicker1.CustomFormat="

yyyy-MM-ddHH:

mm:

ss"

;

dateTimePicker2.CustomFormat="

dateTimePicker1.Format=System.Windows.Forms.DateTimePickerFormat.Custom;

dateTimePicker2.Format=System.Windows.Forms.DateTimePickerFormat.Custom;

dateTimePicker2.Text=dt.Year+"

-"

+dt.Month+"

+dt.Day+"

23:

00:

00"

dateTimePicker1.Text=dt.Year+"

-100:

//这是时间选择后用于调出数据并填充treeview的.

privatevoidbutton1_Click(objectsender,EventArgse)

intstrYear1,strMonth1,strYear2,strMonth2;

stringstr="

"

strYear1=dateTimePicker1.Value.Year;

strMonth1=dateTimePicker1.Value.Month;

strYear2=dateTimePicker2.Value.Year;

strMonth2=dateTimePicker2.Value.Month;

//if(strYear1!

=strYear2&

&

strMonth1!

=strMonth2)

//{

//MessageBox.Show("

不能跨年跨月操作!

);

//return;

//}if(strMonth1<

10)

//这是数据库名

str="

anjian"

+strYear1.ToString()+"

0"

+strMonth1.ToString();

else

+strYear1.ToString()+strMonth1.ToString();

if(myConn!

=null)myConn.Close();

//密码自己设吧

myConn.ConnectionString="

server=192.168.1.187;

InitialCatalog="

+str+"

userId=sa;

Password=****"

myConn.Open();

if(myDs.Tables.Count>

0)myDs.Tables.Clear();

SELECTDISTINCT部门FROM升入井WHERE(DATEDIFF(day,入井,'

str+=dateTimePicker1.Text;

str+="

'

)<

=0)and(DATEDIFF(day,升井,'

str+=dateTimePicker2.Text;

)>

=0)"

myCom.CommandText=str;

myCom.Connection=myConn;

myAdp.SelectCommand=myCom;

myAdp.Fill(myDs,"

dep"

SELECTDISTINCT部门,姓名FROM升入井WHERE(DATEDIFF(day,入井,'

user"

SELECTDISTINCT职务FROM升入井WHERE(DATEDIFF(day,入井,'

Post"

SELECTDISTINCT职务,姓名FROM升入井WHERE(DATEDIFF(day,入井,'

user2"

treeChange();

privatebooltreeChange()

boolIsShangeSuccess=false;

if(treeView1.Nodes.Count>

0)treeView1.Nodes.Clear();

treeView1.Nodes.Add("

"

统计入井人数"

1"

部门入井人数"

2"

职务分类人数"

3"

班次分类人数"

treeView1.Nodes["

].Nodes.Add("

甲班"

乙班"

丙班"

for(inti=0;

i<

myDs.Tables["

].Rows.Count;

i++)

].Nodes.Add(myDs.Tables["

].Rows[i][0].ToString(),myDs.Tables["

].Rows[i][0].ToString());

].Nodes[myDs.Tables["

].Rows[i][0].ToString()].Nodes.Add(myDs.Tables["

].Rows[i][1].ToString());

IsShangeSuccess=true;

returnIsShangeSuccess;

}

好了,这样我们就完成了对treeview的节点添加.下面我们开始制作托拽功能.

第一步先对控件的属性进行设置

treeview1和datagridview1的AllowDrop属性设为true,允许托拽.

在这里我们要完成的是从treeview1中托拽一条数据到datagridview中.计算机执行一条相关的查寻指令,而不是保把数据托到控件上那么简单.现在我们要定议方法了.

首先是treeview1的ItemDrag方法

privatevoidtreeView1_ItemDrag(objectsender,ItemDragEventArgse)

stringstrItem=e.Item.ToString();

//开始进行"

Drag"

操作

DoDragDrop(strItem,DragDropEffects.Copy|DragDropEffects.Move);

接着是MouseDown方法

inttreeLevel=0;

stringtreeC="

privatevoidtreeView1_MouseDown(objectsender,MouseEventArgse)

//获取当前节点

TreeNodenode=treeView1.GetNodeAt(e.X,e.Y);

if(node==null)

//如果当前点击的不是节点则将treeC置空,并返回

treeC="

return;

//获取节点的完整路径

treeC=node.FullPath;

//获取节点的层数.

treeLevel=treeView1.GetNodeAt(e.X,e.Y).Level;

这里的treeC是中用于指示我们点击了哪个节点,根据节点的不同来执行不同的代码.

下面我们开始对接收数据的datagridview1进行操作.先是它的DragEnter方法.

privatevoiddataGridView1_DragEnter(objectsender,DragEventArgse)

if(e.Data.GetDataPresent(DataFormats.Text))

e.Effect=DragDropEffects.Move;

e.Effect=DragDropEffects.None;

这样当我们在treeview1是托一个节点到datagridview1上时就会看到一个被托动的小块在鼠标箭头上.

现在datagridview1已经激活托拽功能.为下一步作了必要准备,现在工们再作一个准备工作,就是分析一下datagridview1激活后要完成什么功能.

第一是要分析我们托的是那个节点,再根据节点执行对应操作.节点已经存在treeC中了.现在我们将treeC拆分,并编写相应功能函数.

privatevoidtreeOp(stringstr)

//完成路径的拆分,存在数组strTemp中.

string[]strTemp;

stringstrTemp1=str;

intiIndexOfStr=str.IndexOf("

\\"

if(treeLevel>

0)

strTemp=newstring[treeLevel+1];

strTemp[0]=str.Substring(0,iIndexOfStr);

strTemp1=str.Substring(iIndexOfStr+1).Trim();

;

for(inti=1;

treeLevel;

iIndexOfStr=strTemp1.IndexOf("

if(iIndexOfStr>

strTemp[i]=strTemp1.Substring(0,iIndexOfStr).Trim();

strTemp1=strTemp1.Substring(iIndexOfStr+1);

strTemp[treeLevel]=strTemp1.Trim();

{

strTemp=newstring[1];

strTemp[0]=str;

stringstrS="

switch(treeLevel)

case0:

if(strTemp[0]=="

strS="

SELECT部门,姓名,COUNT(姓名)AS次数FROM升入井WHERE(DATEDIFF(day,入井,'

strS+=dateTimePicker1.Text;

strS+="

strS+=dateTimePicker2.Text;

=0)GROUPBY部门,姓名orderby部门"

elseif(strTemp[0]=="

strS="

SELECT部门,COUNT(部门)AS人次FROM升入井WHERE(DATEDIFF(day,入井,'

=0)GROUPBY部门"

SELECT职务,COUNT(职务)AS人次FROM升入井WHERE(DATEDIFF(day,入井,'

=0)GROUPBY职务"

SELECT班种,COUNT(班种)AS人次FROM升入井WHERE(DATEDIFF(day,入井,'

=0)GROUPBY班种"

break;

case1:

SELECT姓名,COUNT(姓名)AS次数FROM升入井WHERE(部门='

strS+=strTemp[1];

strS+="

)and(DATEDIFF(day,入井,'

=0)GROUPBY姓名"

SELECT部门,COUNT(姓名)AS次数FROM升入井WHERE(职务='

strS+=strTemp[1];

SELECT部门,职务,姓名,入井,升井FROM升入井WHERE(班种='

=0)orderby部门"

case2:

SELECT工号,姓名,部门,班种,职务,入井,升井,工作时长FROM升入井WHERE(部门='

strS+=strTemp[1];

strS+="

)AND(姓名='

strS+=strTemp[2];

=0)"

SELECT工号,姓名,部门,班种,职务,入井,升井,工作时长FROM升入井WHERE(职务='

strS+=strTemp[2];

default:

DataTabledt=newDataTable();

myCom.CommandText=strS;

myAdp.Fill(dt);

dataGridView1.DataSource=dt.DefaultView;

接下来编托拽的最重要一步,执行功能代码

//这里是托拽的核心执行部分

privatevoiddataGridView1_DragDrop(objectsender,DragEventArgse)

stringdummy="

temp"

//获得进行"

操作中拖动的字符串

strings=(string)e.Data.GetData(dummy.GetType());

dummy=s.Substring(s.IndexOf("

:

)+1).Trim();

项目.Text=du

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1