winform 触发按钮事件以管理员身份运行 dragdrop事件没有触发,请教怎么解决

西西软件下载最安全的下载网站、值得信赖的软件下载站!
您的位置:
→ C#实现文件拖放并打开文件DragEnter、DragDrop事件
需要知道的ListBox的两个事件:当您在控件的边界内拖动对象时,便会发生&DragEnter&事件;该事件用于确定当前拖动的对象是不是您要放到控件上的对象。 在将一个或多个文件拖到控件上时,需要处理此事件。 这使得在将对象拖到控件上方时,能够根据所拖动的对象显示相应的图标。 将拖动的对象释放到控件上时,会发生DragDrop&事件。功能描述:向ListBox拖入一个文件,ListBox显示该文件的路径,然后单击该路径,点击Open按钮打开该文件。代码实现:需要将ListBox的AllowDrop属性改为true,并实现它的DragEnter、DragDrop这两个事件。using Susing System.Collections.GponentMusing System.Dusing System.Dusing System.Lusing System.Tusing System.Windows.Fnamespace DragDrop{&&& public partial class DragDrop : Form&&& {&&&&&&& public string FileP&&&&&&& public DragDrop()&&&&&&& {&&&&&&&&&&& InitializeComponent();&&&&&&& }&&&&&&& /// &&&&&&& /// 获取ListBox的值。&&&&&&& /// &&&&&&& /// &&&&&&& public string GetListBoxItem()&&&&&&& {&&&&&&&&&&& string filePath = string.E&&&&&&&&&&& &&&&&&&&&&& bool isSelected = IsListBoxSelected();&&&&&&&&&&& if (isSelected==true)&&&&&&&&&&& {&&&&&&&&&&&&&&& string listBoxItemValue = lbFilePath.SelectedItem.ToString();&&&&&&&&&&&&&&& filePath = listBoxItemV&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& MessageBox.Show(&ListBox must be selected.&);&&&&&&&&&&& }&&&&&&&&&&& return fileP&&&&&&& }&&&&&&& /// &&&&&&& /// ListBox内的值是否被选中。&&&&&&& /// &&&&&&& /// &&&&&&& public bool IsListBoxSelected()&&&&&&& {&&&&&&&&&&&&&&&&&&&&&& if (lbFilePath.SelectedIndex == -1)//SelectedIndex==-1时,表示未选中任何项。&&&&&&&&&&& {&&&&&&&&&&&&&&& selected =&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& selected =&&&&&&&&&&& }&&&&&&&&&&&&&&&&&& }&&&&&&& private void lbFilePath_DragEnter(object sender, DragEventArgs e)&&&&&&& {&&&&&&&&&&& if (e.Data.GetDataPresent(DataFormats.FileDrop))&&&&&&&&&&& {&&&&&&&&&&&&&&& e.Effect = DragDropEffects.A&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& e.Effect = DragDropEffects.N&&&&&&&&&&& }&&&&&&& }&&&&&&& private void lbFilePath_DragDrop(object sender, DragEventArgs e)&&&&&&& {&&&&&&&&&&& string[] s=(string[])e.Data.GetData(DataFormats.FileDrop,false);&&&&&&&&&&& &&&&&&&&&&& for (int i = 0; i & s.L i++)&&&&&&&&&&& {&&&&&&&&&&&&&&& lbFilePath.Items.Add(s[i]);&&&&&&&&&&& }&&&&&&& }&&&&&&& private void btnOpenFile_Click(object sender, EventArgs e)&&&&&&& {&&&&&&&&&&& string filePath=GetListBoxItem();&&&&&&&&&&& if (!string.IsNullOrEmpty(filePath))&&&&&&&&&&& {&&&&&&&&&&&&&&& System.Diagnostics.Process.Start(filePath);&&&&&&&&&&& }&&&&&&& }&&& }}总结:Data&对象的&GetData&方法返回一个字符串数组,该数组包含拖到该列表框控件中的文件的完整路径名。 可以使用此文件路径信息来执行需要对文件执行的任何操作。
阅读本文后您有什么感想? 已有
人给出评价!
访问量多的winform 拖动鼠标并释放鼠标触发什么事件 释放鼠标时鼠标指针不在鼠标上方 求高手指点_百度知道
winform 拖动鼠标并释放鼠标触发什么事件 释放鼠标时鼠标指针不在鼠标上方 求高手指点
提问者采纳
其实要说问题句两句根本清楚拖拽程其触发<img class="word-replace" src="/api/getdecpic?picenc=0a006c655f、4相关事件 让控件接受另控件拖拽事件其实简单启控件 AllowDrop
属性拖拽相关内容关键字: DragDropMSDN搜索 DragDrop 找关信息
提问者评价
其他类似问题
为您推荐:
鼠标指针的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁& & &在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误。
& & &比如在通过winform程序执行cmd命令时,某些情况下如果不是以管理员身份运行,则会提示命令无效。
& & &或者通过winform程序执行Windows Service 服务时,也需要以管理员身份才能调用Service服务。
下面讲解一下如何使程序获取管理员权限来运行。
一: 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找到&安全性&选项,
二:勾选&启用ClickOnce安全设置&,
三:这时,在项目下面会多出一个&app.manifest&的文件,选中它,并找到代码段&requestedExecutionLevel level="asInvoker" uiAccess="false" /&,将其改为:&requestedExecutionLevel level="requireAdministrator" uiAccess="false" /&,
将上图部分修改为:
四:改正后,不要急于重新编译生成,再次打开&属性--安全性&界面,
将&启用ClickOnce安全设置&前面的勾去掉后再编译运行。 不然程序会报错无法运行。
五:最后,保存修改,重新编译运行程序。
打开程序时,会提示&用户账户控制&来获取管理员权限运行,点击&是&则获取了管理员权限。
阅读(...) 评论()c# 在winform中实现文件拖放功能 - 为程序员服务
为程序员服务
在winform中实现文件拖放功能
首先需要新建一个winform窗体,然后将AcceptDrop设置为true,这样程序就会接受DropEnter和DropDrop事件了。
当DropEnter事件触发时,需要将AllowedEffect属性设置为非None值比如e.Effect = DragDropEffects.Move.
当DragDrop事件触发时,可以得到一个文件全路径的字符串数组。
如下是示例代码:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
this.AllowDrop =
this.DragEnter += new DragEventHandler(Form1_DragEnter);
this.DragDrop += new DragEventHandler(Form1_DragDrop);
void Form1_DragEnter(object sender, DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.C
void Form1_DragDrop(object sender, DragEventArgs e) {
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string file in files) Console.WriteLine(file);
您可能的代码
相关聚客文章
相关专栏文章当前位置: →
→ 解决WinForm程序中由于拖拽导致MouseUp事件无法触发的问题
解决WinForm程序中由于拖拽导致MouseUp事件无法触发的问题
& 作者及来源: 赤红十三 - 博客园 &
&收藏到→_→:
摘要: 解决WinForm 程序中由于拖拽导致MouseUp事件无法触发的问题
"解决WinForm程序中由于拖拽导致MouseUp事件无法触发的问题"::
在工作过程中遇到如下问题:
在一个界面上要求控件(linklabel)能够拖拽,单击控件要能够跳出窗口。于是按照常规的方法,mousedown中加入dodragup,再加入dragenter和dragdrop,完事。
发现无法跳出窗口了(跳出窗口写在mouseup事件中)。
琢磨了很久,也上网找了许多资料,包括msdn上面的,最后重写控件解决,现总结一下:
一开始想到用双击来代替单击,无奈双击包括单击,就想能不能把他们分开呢?
msdn上的方法有两个,一个是回滚单击操作,一个是在mousedown 事件中区分单击和双击
链接:/zh-cn/library/ms171543.aspx,大家可以先参考一下
先说第一种:
关键的在这里:
<span style="color: #&public&doubleclickbutton()&:&base()<span style="color: #&&&&&&&&&{<span style="color: #&&&&&&&&&&&&&//&set&the&style&so&a&double&click&event&occurs.<span style="color: #&&&&&&&&&&&&&setstyle(controlstyles.standardclick&|&<span style="color: #&&&&&&&&&&&&&&&&&controlstyles.standarddoubleclick,&true);<span style="color: #&&&&&&&&&}
测试的时候发现双击事件触发需要单击3次。
第二种方法:
等于是创建一个组件,包括一个timer用来及时,超过一定时间没有点击第二下的就触发单击事件。
试了一下,发现他是在第一次按下的时候启动timer,用来区分单击和双击还此文来自: 马开东博客
转载请注明出处 网址:
是很好的,但是如果是双击和拖拽,或者单击和拖拽的组合那就不行了,另外因为
项目中界面上的linklabel数量太多了,怕影响性能。
所以最后只能自己解决啦,思路还是要区分开单击和拖拽,就是在mousedown中不执行dodrag,而是置一个标志位,等到拖动控件出了规定的范围后才执行dodrug,也就是说在mousemove事件中执行dodrag,具体代码如下:
&1&protected&override&void&onmousedown(mouseeventargs&e)&2&&&&&&&&&{&3&&&&&&&&&&&&&if&(e.button&==&mousebuttons.left)&4&&&&&&&&&&&&&{&5&&&&&&&&&&&&&&&&&this.ifdodrag&=&true;//标志位,需自定义&6&&&&&&&&&&&&&}&7&&&&&&&&&&&&&base.onmousedown(e);&8&&&&&&&&&}&9&&&&&&&&&protected&override&void&onmousemove(mouseeventargs&e)<span style="color: #&&&&&&&&&{<span style="color: #&&&&&&&&&&&&&if&(this.ifdodrag)//还可以加入其它的判断条件,比如拖出多少范围后才触发拖动<span style="color: #&&&&&&&&&&&&&{<span style="color: #&&&&&&&&&&&&&&&&&this.dodragdrop(data,&dragdropeffects.move);<span style="color: #&&&&&&&&&&&&&&&&&this.ifdodrag&=&false;<span style="color: #&&&&&&&&&&&&&}<span style="color: #&&&&&&&&&&&&&base.onmousemove(e);<span style="color: #&&&&&&&&&}<span style="color: #&&&&&&&&&protected&override&void&onmouseup(mouseeventargs&e)<span style="color: #&&&&&&&&&{<span style="color: #&&&&&&&&&&&&&this.dodragdrop&=&false;<span style="color: #&&&&&&&&&&&&&base.onmouseup(e);<span style="color: #&&&&&&&&&}
以上是我重写的linklabel控件,也可以依样画葫芦重写其它的控件
然后在容器中添加该控件,就像使用普通的linklabel一样,添加mousedown,mouseup事件,其中mousedown中需要将需要拖拽的数据data传入控件,而mouseup中就可以执行先前需要单击执行的操作。
这样,问题就解决了。搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
解决WinForm程序中由于拖拽导致MouseUp事件无法触发的问题_博客园相关文章
博客园_总排行榜
博客园_最新
博客园_月排行榜
博客园_周排行榜
博客园_日排行榜}

我要回帖

更多关于 winform 触发点击事件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信