テキストボックスに、ファイルをドラッグアンドドロップして開けるようにするにはどうするんだろう?
と思い立って試行錯誤してこうなった。
- PreviewDragOverイベントでFileDropなら受け付けるみたいな処理を書く
private void textBox_PreviewDragOver(object sender, DragEventArgs e)
{
// FileDropならとりあえずOK
e.Handled = e.Data.GetData(DataFormats.FileDrop) != null;
}
- Dropイベントでドロップされたファイル名のファイルを開く(とりあえずSJISで)
private void textBox_Drop(object sender, DragEventArgs e)
{
// ドロップされたファイルを開く
string[] fileNames = e.Data.GetData(DataFormats.FileDrop) as string[];
if (fileNames != null && fileNames.Length != 0)
{
using (StreamReader sr = new StreamReader(
new FileStream(fileNames[0], FileMode.Open), Encoding.GetEncoding("SJIS")))
{
textBox.Text = sr.ReadToEnd();
sr.Close();
}
}
}
ファイル開けなかったときのエラー処理でも加えたら一応使い物になるのかなぁ???
PreviewDragOverでもっと何かしないといけないような気もする…