У меня есть элемент управления Treeview и listbox на форме. Отбрасывание элементы из TreeView на ListBox обрабатывается с помощью следующего метода:TableLayoutControl DragNDrop Issue
void ListBoxDrop(Dictionary<string, string> datasource, DragEventArgs e)
{
// Retrieve the client coordinates of the drop location.
Point targetPoint = this.PointToClient(new Point(e.X, e.Y));
// Retrieve the listBox at the drop location. (This is where it sees a TableLayoutControl)
object controlAtPoint = this.GetChildAtPoint(targetPoint);
if (!(controlAtPoint is ListBox))
return;
ListBox targetListbox = this.GetChildAtPoint(targetPoint) as ListBox;
// Retrieve the node that was dragged.
TreeNode draggedNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
// Only add the item if it doesnt already exist in the list.
if (!datasource.ContainsKey(draggedNode.Tag.ToString()))
{
datasource.Add(draggedNode.Tag.ToString(), draggedNode.Text);
}
}
Вопрос в том, когда я перетащить TableLayoutPanel из контейнеров инструментов на мою форму, а затем переместить ListBox в одну из ячеек TableLayoutPanel. Что происходит сейчас, когда перетаскивание из TreeView в Listbox заключается в том, что this.GetChildAtPoint (targetPoint) возвращает ссылку управления TableLayoutPanel вместо элемента управления ListBox.
Есть ли способ получить this.GetChildAtPoint, чтобы вернуть список вместо его управления контейнером?
Dankie
Это сделал трюк. Благодарю. – TheLegendaryCopyCoder