2015-06-11 2 views
3

У меня проблемы с перетаскиванием элемента управления на другой элемент управления. Я имел успех в возможности выбрать оба управления, но когда я пытаюсь использовать:Teststack.White Проблемы с перетаскиванием

Mouse.Instance.Location = dragControl.ClickablePoint; 
Mouse.LeftDown(); 

Mouse.Instance.Location = dropControl.ClickablePoint; 
Mouse.LeftUp(); 

Сопротивление не происходит, перемещение мыши. Но контроль остается в исходном месте.

Я также попытался с помощью:

Mouse.Instance.DragAndDrop(dragItem, dragItem.ClickablePoint, dropItem, dropItem.ClickablePoint); 

Еще не повезло.

Я делал некоторые эксперименты и один момент и получил его на работу, но я потерял контроль над ресурсом, в котором я нашел работоспособное решение раньше (и я удалил свой рабочий код - извлеченный урок).

Любая помощь будет оценена!

Заранее благодарен!

Update 6/15

Хорошо, так что я рубил на это немного. По какой-то причине кажется, что управление фактически не перетаскивается. Мышь перемещается, но управление не перемещается вместе с ней.

ответ

3

Хорошо, я понятия не имею, почему функция White DragAndDrop не работает (или вручную с помощью leftDown, move, leftUp).

Но я нашел решение.

По существу, я переписал белую функцию перетаскивания с задержкой между каждым шагом. Таким образом, это выглядит следующим образом:

guiObject.Click(); 
Mouse.LeftDown(); 

var stepCount = 10; 
var stepAmount = (float) (guiObject.ClickablePoint.Y - targetObject.ClickablePoint.Y)/stepCount; 

for (var i = 0; i < stepCount; i++) 
{ 
    Mouse.Instance.Location = new Point(Mouse.Instance.Location.X, Mouse.Instance.Location.Y - stepAmount); 
    Thread.Sleep(75); // I played around with the values and 75 seems to work without being too slow 
} 

Mouse.LeftUp(); 

Надеюсь, это поможет любому, у кого может возникнуть эта проблема. Я не знаю, зачем мне нужно затягивать, но это работает.

+0

У меня была такая же проблема в библиотеке автоматизации GUI 'pywinauto'. Да, многие элементы управления с поддержкой drag-n-drop обнаруживают перетаскивание, только если мышь плавно перемещается. Таким образом, перемещение мыши в пикселе цикла за пикселем решает проблему. –

+0

Работала также: перемещайте 10 пикселей вниз, пиксель на пиксель, с 75 мс между каждым перемещением пикселя –