Ngoài ra, để trả lời AR, xin lưu ý rằng nếu bạn muốn sử dụng TextBox
để thả, bạn phải biết những điều sau đây.
TextBox
dường như đã có một số xử lý mặc định cho DragAndDrop
. Nếu đối tượng dữ liệu của bạn là a String
, nó chỉ hoạt động. Các loại khác không được xử lý và bạn nhận được hiệu ứng chuột Cấm và trình xử lý Drop của bạn không bao giờ được gọi.
Nó có vẻ như bạn có thể bật xử lý của riêng bạn với e.Handled
để đúng trong một PreviewDragOver
xử lý sự kiện.
XAML
<TextBox AllowDrop="True" x:Name="RtbInputFile" HorizontalAlignment="Stretch" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" />
C #
RtbInputFile.Drop += RtbInputFile_Drop;
RtbInputFile.PreviewDragOver += RtbInputFile_PreviewDragOver;
private void RtbInputFile_PreviewDragOver(object sender, DragEventArgs e)
{
e.Handled = true;
}
private void RtbInputFile_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
// Note that you can have more than one file.
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
var file = files[0];
HandleFile(file);
}
}