拖放-用户界面查询

发布于 2025-01-09 15:06:07 字数 211 浏览 0 评论 0原文

c# winforms -我试图通过一些拖放功能来改进我的应用程序。 - 这一切都工作正常 - 但我想在表单被拖动作为放置目标时显示一个带有诸如“Drop Here”之类的文本的“框”。当拖动进入表单时,我可以让图片框以这种方式显示,但是图片框不会接受拖放。

投放数据将是一个文件或一个网址 - 我再次可以管理其标识,我唯一需要做的就是让图片框接受投放,但这似乎是不可能的,

谢谢

c# winforms -I am trying to improve my app by having some drag drop functionality. - This is all working fine - but i would like to show a "Box" with text such as "Drop Here" when the form is dragged over as a target for the drop. i can get the picture box to display in that manner when drag enters the form, however the picture box will not accept the drop.

The drop data will either be a file or a web address - again i can manage the identification of that, the only thing i need to do is to get the picture box to accept the drop, and that does not appear to be possible

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听不够的曲调 2025-01-16 15:06:07

一个简单的示例,将标签放置在文本框的顶部。将标签的可见性设置为 false。

  • 在 TextBox 的 DragEnter 事件中,将标签 Visible 设置为 true
  • 在 TextBox 的 DragLeave 事件中,将标签 Visible 设置为 false
  • 在 TextBox 的 DragDrop 事件中,将标签 Visible 设置为 false

这里 TextBox 的名称是 FolderTextBox,我们的标签是 ShowHelpLabel 。

private void FolderTextBox_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
        ShowHelpLabel.Visible = true;
    }
}

private void FolderTextBox_DragLeave(object sender, EventArgs e)
{
    ShowHelpLabel.Visible = false;
}

private void FolderTextBox_DragDrop(object sender, DragEventArgs e)
{
    var droppedData = (string[])e.Data.GetData(DataFormats.FileDrop);

    if (!Directory.Exists(droppedData[0])) return;
    ShowHelpLabel.Visible = false;
    FolderTextBox.Text = droppedData[0];
}

上面的完整源代码是一个简单的实用程序。

输入图片此处描述

A simple example, place a Label on top of a TextBox. Set visibility of the Label to false.

  • In DragEnter event of the TextBox, set the label Visible to true
  • In DragLeave event of the TextBox, set the label Visible to false
  • In DragDrop event of the TextBox, set the label Visible to false

Here the TextBox name is FolderTextBox and our label is ShowHelpLabel.

private void FolderTextBox_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
        ShowHelpLabel.Visible = true;
    }
}

private void FolderTextBox_DragLeave(object sender, EventArgs e)
{
    ShowHelpLabel.Visible = false;
}

private void FolderTextBox_DragDrop(object sender, DragEventArgs e)
{
    var droppedData = (string[])e.Data.GetData(DataFormats.FileDrop);

    if (!Directory.Exists(droppedData[0])) return;
    ShowHelpLabel.Visible = false;
    FolderTextBox.Text = droppedData[0];
}

Full source for above which is a simple utility.

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文