Я создаю простую форму только с панелью с двумя полями для расширенного текста, и единственная функциональность заключается в том, чтобы позволить пользователю перетаскивать текст между двумя полями для расширенного текста.
Вот код:
using System;
using System.Windows.Forms;
namespace Exmaple
{
class PanelForm : Form
{
private RichTextBox rtb1, rtb2;
public PanelForm()
{
this.rtb1 = new RichTextBox();
this.rtb2 = new RichTextBox();
this.rtb1.AllowDrop = true;
this.rtb2.AllowDrop = true;
//this.rtb1.DragEnter += new DragEventHandler(this.rtb_DragEnter);
//this.rtb1.DragDrop += new DragEventHandler(this.rtb1_DragDrop);
this.rtb2.DragEnter += new DragEventHandler(this.rtb_DragEnter);
this.rtb2.DragDrop += new DragEventHandler(this.rtb2_DragDrop);
this.rtb2.DragOver += new DragEventHandler(this.rtb_DragOver);
Panel panel = new Panel();
panel.Controls.Add(rtb1);
panel.Controls.Add(rtb2);
this.Controls.Add(panel);
this.rtb1.Dock = DockStyle.Left;
this.rtb2.Dock = DockStyle.Right;
panel.Dock = DockStyle.Fill;
this.Text = "Panel Form";
this.Width = 600;
this.Height = 300;
}
private void rtb_DragEnter(object sender, DragEventArgs args)
{
if (args.Data.GetDataPresent(DataFormats.Rtf))
{
args.Effect = DragDropEffects.Copy;
}
else
{
args.Effect = DragDropEffects.None;
}
}
private void rtb_DragOver(object sender, DragEventArgs args)
{
if (args.Data.GetDataPresent(DataFormats.Rtf))
{
args.Effect = DragDropEffects.Copy;
}
else
{
args.Effect = DragDropEffects.None;
}
}
private void rtb1_DragDrop(object sender, DragEventArgs args)
{
this.rtb1.SelectedRtf = args.Data.GetData(DataFormats.Rtf).ToString();
}
private void rtb2_DragDrop(object sender, DragEventArgs args)
{
this.rtb2.SelectedRtf = args.Data.GetData(DataFormats.Rtf).ToString();
}
}
}
Проблема в том, что событие rtb_DragEnter вызывается, а rtb2_DragDrop - нет. Для свойства allowDrop установлено значение true, а в событии rtb_DragEnter для DragDropEffects установлено значение Copy. Еще одна вещь, курсор является отрицательным знаком, почему это так?
Plateform - win7, и я использую VS2010 с .NET версии 4.
Любой, кто имеет какие-либо комментарии или предложения, приветствуется!