Источник перетаскиваемого элемента - PullRequest
0 голосов
/ 13 декабря 2011

Есть ли способ узнать, что является источником перетаскиваемого элемента?Т.е. мы перетащили изображение из chrome / firefox / etc в приложение winforms, и в момент отбрасывания я хотел бы знать источник (может быть дескриптор окна) элемента (chrome, ff и т. Д.).

1 Ответ

1 голос
/ 14 декабря 2011

Не условно. Чем более невежественна операция перетаскивания из своего источника, тем лучше ее конструкция.

Можно определить источник, добавив дополнительные метаданные (строки и т. Д.) В операцию перетаскивания, используя пользовательский формат. Вы можете попробовать «слежку» за различными перетаскиваниями, используя метод IDataObject.GetFormats:

    private void Test_DragDrop(object sender, DragEventArgs e)
    {
        string[] formats = e.Data.GetFormats();

        foreach (string s in formats)
        {
            try
            {
                string d = (string)e.Data.GetData(s);
                MessageBox.Show(s + "\n" + d);
            }
            catch { }
        }
    }

Обратите внимание, что в этом примере я принудительно приведу все данные к строкам. Обычно он генерирует некоторые исключения, потому что могут быть также присоединены не строковые значения. Например, в Google Chrome при копировании строки предлагалось 8 различных форматов данных, только 5 из которых были строками.

Если вы хотите инициировать свои собственные операции перетаскивания и иметь возможность проверить, являетесь ли вы источником, вы можете использовать для этой цели пользовательский формат данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...