Не условно. Чем более невежественна операция перетаскивания из своего источника, тем лучше ее конструкция.
Можно определить источник, добавив дополнительные метаданные (строки и т. Д.) В операцию перетаскивания, используя пользовательский формат. Вы можете попробовать «слежку» за различными перетаскиваниями, используя метод 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 из которых были строками.
Если вы хотите инициировать свои собственные операции перетаскивания и иметь возможность проверить, являетесь ли вы источником, вы можете использовать для этой цели пользовательский формат данных.