0

カスタム DotNet プログラムの入力ボックスに単純なテキスト ファイルをドラッグ アンド ドロップできる単純な WinForms アプリの作成を (多数の例を使用して) 試みました。残念ながら、Windows 7 で実際に動作するサンプルはないようです。

これは簡単な例です (あちこちで参照されている別の投稿から) が、まったく機能しません。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;


namespace DragAndDropTestCSharp
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.AllowDrop = true;
        this.DragEnter += Form1_DragEnter;
        this.DragDrop += Form1_DragDrop;
    }
    private void Form1_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            e.Effect = DragDropEffects.Copy;
        }
        else
        {
            e.Effect = DragDropEffects.None;
        }
    }

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));
            foreach (string fileLoc in filePaths)
            {
                // Code to read the contents of the text file
                if (File.Exists(fileLoc))
                {
                    using (TextReader tr = new StreamReader(fileLoc))
                    {
                        MessageBox.Show(tr.ReadToEnd());
                    }
                }

            }
        }
    }
}
}

これは UAC の問題でしょうか? もしそうなら、世界中の他のすべてのアプリが、UAC をオンにした状態でドラッグ アンド ドロップという単純でありながらとらえどころのない偉業を実行しているように見えるのはなぜでしょうか?

これをWindows 7で動作させる実際の実際の例を誰かが持っていますか?

4

2 に答える 2

1

私はあなたのサンプルを試しましたが、うまくいきます。Load イベントをフォーム オブジェクトの Form1_Load ハンドラーにフックしているかどうかを確認し、名前空間が同じであることを確認します。

this.Load += new System.EventHandler(this.Form1_Load);

またはプロパティ エディターを介して:

プロパティ ロード ハンドラ

于 2013-04-12T16:57:27.980 に答える