@climbageによって提供された回答には良い説明があります。RichTextBoxでドラッグアンドドロップを実行する方法は次のとおりです
コード:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace rich_RichtextboxDragDrop
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
AllowDrop = true;
this.richTextBox1.DragEnter += new DragEventHandler(richTextBox1_DragEnter);
this.richTextBox1.DragDrop += new DragEventHandler(richTextBox1_DragDrop);
}
void richTextBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if ((e.Data.GetDataPresent(DataFormats.FileDrop)))
{
e.Effect = DragDropEffects.Copy;
}
}
void richTextBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
Image img = default(Image);
img = Image.FromFile(((Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString());
Clipboard.SetImage(img);
this.richTextBox1.SelectionStart = 0;
this.richTextBox1.Paste();
}
}
}
詳細については編集
これが、[プロパティ]タブに表示されない理由です。属性 [Browsable(false)]
は、PropertyGrid
プロパティを表示しないように指示します。これがMSDNからのコードのソースです。
/// <include file='doc\RichTextBox.uex' path='docs/doc[@for="RichTextBox.DragEnter"]/*' />
/// <devdoc>
/// RichTextBox controls have built-in drag and drop support, but AllowDrop, DragEnter, DragDrop
/// may still be used: this should be hidden in the property grid, but not in code
/// </devdoc>
[Browsable(false)]
public new event DragEventHandler DragEnter {
add {
base.DragEnter += value;
}
remove {
base.DragEnter -= value;
}
}