Tag: 拖放

从Windows文件资源管理器拖放到Windows窗体上无法正常工作

我在将文件从Windows资源管理器拖到Windows窗体应用程序时遇到问题。 我拖动文本时工作正常,但由于某种原因它无法识别文件。 这是我的测试代码: namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_DragDrop(object sender, DragEventArgs e) { } private void Form1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.Text)) { e.Effect = DragDropEffects.Copy; } else if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Copy; } else { e.Effect = DragDropEffects.None; } } […]

将图像从浏览器拖放到WPF应用程序

我正在尝试在我的WPF应用程序中实现function,将图像从浏览器拖到我的WPF应用程序的窗口中。 该代码适用于Firefox和Windows资源管理器,但Chrome和IE出现问题(尚未尝试任何其他浏览器)。 这是一段代码: private void Drag_Enter(object sender, DragEventArgs e) { foreach (string format in e.Data.GetFormats()) Console.WriteLine(format); Console.WriteLine(“Effects:” + e.AllowedEffects); } private void Drag_Drop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); ImageSourceConverter converter = new ImageSourceConverter(); foreach (string file in files) { if (converter.IsValid(file)) { // Do something with the image } } } 看看输出,似乎Firefox实际上将图像保存到剪贴板,而Chrome只是抓取图像的html,而IE不会对它做任何事情。 […]

从.net winforms应用程序实现文件拖动到桌面?

我有一个文件列表,其列表框中包含其名称,其内容存储在SQL表中,并希望我的应用程序的用户能够在列表框中选择一个或多个文件名并将其拖到桌面上,从而产生桌面上的实际文件。 我找不到有关如何执行此操作的任何文档。 任何人都可以解释或指出解释吗? 稍后添加:我已经能够通过处理DragLeave事件来完成这项工作。 在其中,我在临时目录中创建一个文件,其中包含所选名称和从SQL Server中提取的内容。 然后我将文件的路径放入对象: var files = new string[1]; files[0] = “full path to temporary file”; var dob = new DataObject(); dob.SetData(DataFormats.FileDrop, files); DoDragDrop(dob, DragDropEffects.Copy); 但这似乎非常低效和笨拙,我还没有想出一个摆脱累积的临时文件的好方法。

C#在FlowLayoutPanels中拖放标签

我有小问题。 我想要make程序,我可以在多个FlowLayoutPanel之间拖动生成的标签。 但最近几天我试图拖放工作。 我尝试了许多教程,示例等但它总是有点不同,我不能只提取基本代码。 它与此程序类似,但它在Visual Basic中,我需要它在C#中。 我知道这可能很简单,但我是新手。 谢谢你的帮助。

使用代码模拟窗口拖放?

我想我过去可能会问过类似的问题,但我仍然被卡住了…… 作为自动化流程的一部分,我必须将特定的媒体文件子集“导入”一个封闭源的第三方应用程序(Dartfish,这很重要)。 情况如下: 媒体(video)文件都在一个文件夹中(其中有1000个,不幸的是重组不是一个选项)。 在我编写的脚本的任何给定迭代中,只有13个特定文件必须导入到应用程序中。 应用程序中没有必须接收文件的导入function。 这个相同的应用程序允许您将文件拖放到特定窗格中,这使您可以实际导入它们。 我正在使用的当前解决方法非常不稳定和丑陋,并使用复杂的正则表达式查询过程来隔离Xplorer2中的文件,然后使用AutoIT选择它们,然后最终将它们拖到应用程序中。 建议的解决方案: 我需要一种方法将任何给定时间所需的video文件的特定子集拖放到此应用程序中,最好不要自动执行点击和光标移动(此设置中存在太多故障点)。 我本质上只是将一个文件名列表传递给应用程序(通过拖动它们),所以我认为必须有一种方法可以自动执行这种拖放操作纯粹在代码中 – 可能使用C / C#/ C ++和windows API ? 如果解决方案可以某种方式移植到Python,则可以获得奖励……但不是必需的。 如果有人能指出我正确的方向(编程语言并不重要;我会学到任何我需要知道的东西),最好给我一个基本的大纲或如何完成这样一个任务的例子,我会真的很感激! 这已经让我疯了一年多了!

来自另一个线程的DoDragDrop()

每次我想让用户拖动一个控件,我调用该控件的DoDragDrop。 拖放工作正常,但我有问题周围的事情: DoDragDrop完全阻止表单,没有计时器事件跳转,没有处理绘制消息。 DoDragDrop不仅阻塞了拖放操作,而且直到目标程序完成了drop事件(IE explorer.exe的suck代码)。 根据其他程序的代码很糟糕。 我想从一个新线程调用DoDragDrop。 试过这个: Thread dragThread = new Thread(() => { Form frm = new Form(); frm.DoDragDrop(“data”, DragDropEffects.All); }); dragThread.SetApartmentState(ApartmentState.STA); dragThread.IsBackground = true; dragThread.Start(); 但它似乎不起作用。 我的意思是:当从这样的其他线程执行DoDragDrop时,我的程序或其他程序中的其他控件不接收拖放消息。 还有其他方法吗?

WPF拖放 – 从DragEventArgs获取原始源信息

我正在尝试使用MVVM编写拖放function,这将允许我将PersonModel对象从一个ListView拖到另一个。 这几乎可以工作,但我需要能够从DragEventArgs获取源ListView的ItemsSource,我无法弄清楚如何做。 private void OnHandleDrop(DragEventArgs e) { if (e.Data != null && e.Data.GetDataPresent(“myFormat”)) { var person = e.Data.GetData(“myFormat”) as PersonModel; //Gets the ItemsSource of the source ListView .. //Gets the ItemsSource of the target ListView and Adds the person to it ((ObservableCollection)(((ListView)e.Source).ItemsSource)).Add(person); } } 任何帮助将不胜感激。 谢谢!

如何在c#中拖放事件中区分文件或文件夹?

我有一个表单,您可以拖放文件,我想知道如果数据是文件或文件夹,我怎么能知道应用程序。 我的第一次尝试是寻找一个“。” 在数据但然后一些文件夹确实有一个。 在他们中。 我也试过做一个File.Exists和一个Directory.Exists条件但是它只搜索当前的应用程序路径而不是其他任何地方。 无论如何我可以以某种方式将.Exists应用于特定目录中,或者有没有办法可以检查拖入表单的数据类型?

如何拖动hover元素

我运行此网站的网站是在内部服务器上,所以我无法提供链接,但我可以发布一些单击“显示元素”时显示的相关代码 有5个元素与此相关: 组别1 学生 move1 第2组 MOVE2 此页面显示学生组,并允许用户在组之间拖动学生。 每个组都有一个移动元素。 棘手的部分是,任何给定组的移动按钮仅在用户拖动该组上的学生元素时显示,而该学生不是来自该组。 目标是将学生移至新组,然后返回原始组。 注意:学生XPath在更改组时会发生变化我无法确认,但我相信移动按钮的XPath在隐藏时不同于可见时 我目前的代码: IWebDriver driver = (IWebDriver)FeatureContext.Current[“Driver”]; Actions builder = new Actions(driver); IWebElement originalstudent = driver.FindElement(By.XPath(“//*[@id=\”AMTeacherApp\”]/div/div/div[1]/div/div[3]/div/div/div[2]/div[2]/div[2]/div/div[3]/a[1]/div[1]/div”)); IWebElement originalClass = driver.FindElement(By.XPath(“//*[@id=\”AMTeacherApp\”]/div/div/div[1]/div/div[3]/div/div/div[2]/div[2]/div[2]/div/div[1]”)); IWebElement newClass = driver.FindElement(By.XPath(“//*[@id=\”AMTeacherApp\”]/div/div/div[1]/div/div[3]/div/div/div[2]/div[2]/div[3]/div[1]/div[1]”)); IWebElement originalMove = driver.FindElement(By.XPath(“//*[@id=\”AMTeacherApp\”]/div/div/div[1]/div/div[3]/div/div/div[2]/div[2]/div[2]/div/div[2]/div[1]/div”)); IWebElement newMove = driver.FindElement(By.XPath(“//*[@id=\”AMTeacherApp\”]/div/div/div[1]/div/div[3]/div/div/div[2]/div[2]/div[3]/div[1]/div[2]/div[1]/div”)); builder.ClickAndHold(originalstudent); builder.MoveToElement(newClass); builder.Release(newMove); builder.Build().Perform(); IWebElement save = driver.FindElement(By.XPath(“//*[@id=\”AMTeacherApp\”]/div/div/div[1]/div/div[3]/div/div/div[1]/div/div/button[2]”)); builder.Click(save); builder.Build().Perform(); //assert group2 has […]

拖放listview C#

您好,当我双击listview时,如何启用拖动事件处理程序? 这是双击列表视图后得到的结果 private void listView1(object sender, EventArgs e) 但是,我希望它是 private void listView(object sender,DragEventArgs e) 我该怎么做..? 我尝试了很多方法,例如: private void Form_Load(object sender, EventArgs e) { // Enable drag and drop for this form // (this can also be applied to any controls) this.AllowDrop = true; // Add event handlers for the drag & drop functionality this.DragEnter += […]