Перетаскивание WPF — System.InvalidOperationException. Обработка диспетчером приостановлена, но сообщения продолжают обрC#

Место общения программистов C#
Ответить
Anonymous
 Перетаскивание WPF — System.InvalidOperationException. Обработка диспетчером приостановлена, но сообщения продолжают обр

Сообщение Anonymous »

Я пытаюсь создать окно с двумя панелями, между которыми можно перемещать текстовые поля.
Мой код:
MainWindow .xaml MainWindow.xaml.cs

Код: Выделить всё

using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace DragAndDropTest
{
/// 
/// Interaction logic for MainWindow.xaml
/// 
public partial class MainWindow : Window
{
private TextBox draggedTextBox;

public MainWindow()
{
InitializeComponent();
}

private void TextBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
draggedTextBox = sender as TextBox;
}

private void TextBox_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed &&  draggedTextBox != null)
{
draggedTextBox.Dispatcher.Invoke(() =>
{
DragDrop.DoDragDrop(draggedTextBox, draggedTextBox.Text, DragDropEffects.Move);
});
}
}

private void StackPanel_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
string text = (string)e.Data.GetData(DataFormats.Text);

if (sender != draggedTextBox.Parent)
{
var stackPanel = sender as StackPanel;
if (stackPanel != null)
{
var textBox = new TextBox { Text = text };
stackPanel.Children.Add(textBox);
}

var originalStackPanel = draggedTextBox.Parent as StackPanel;
if (originalStackPanel != null)
{
originalStackPanel.Children.Remove(draggedTextBox);
}
}
}
}
}
}
Когда я пытаюсь перетащить элемент на вторую панель, я получаю исключение:
System.InvalidOperationException. Обработка диспетчером приостановлена, но сообщения продолжают обрабатываться в методе TextBox_MouseMove
строка: DragDrop.DoDragDrop(draggedTextBox, draggedTextBox.Text, DragDropEffects.Move);
Не могу найти решение в Интернете.
Можете ли вы сказать мне, что я сделал не так?
С уважением

Подробнее здесь: https://stackoverflow.com/questions/786 ... essing-has
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»