2014-10-28 3 views
0

Хотя я получил, как перемещать элементы управления и перетаскивать существующий элемент управления при поиске в Интернете, я не получил решения о том, как скопировать элемент управления в панель/групповой пакет и т. Д. .Как перетащить копию элементов управления

Я разрабатываю приложение, в котором я перетаскиваю кнопки из панели в другую панель. Мне нужно перетащить кнопку из Panel-1 и вставить ее в «Panel-2». Вот скриншот

enter image description here

ответ

0

я получил свое собственное решение.

Прежде всего, установите свойство панели AllowDrop на значение true.

panel1.AllowDrop=true; 

Создать DragEnter событие для панели из окна свойств

private void panel1_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move; 
} 

Далее создайте DragDrop событие для панели из окна свойств

private void panel1_DragDrop(object sender, DragEventArgs e) 
{ 
    Control c = e.Data.GetData(e.Data.GetFormats()[0]) as Control; 
    // Declare rnd globally for creating random id for dynamic button(eg : Random rnd = new Random();) 
    Button btn = new Button(); 
    btn.Name = "Button" + rnd.Next(); 
    btn.Size = c.Size;    
    btn.Click += new System.EventHandler(DynamicButton_Click); 
    if (c != null) 
    {     
     btn.Text = c.Text; 
     btn.Location = this.panel1.PointToClient(new Point(e.X, e.Y)); 
     this.panel1.Controls.Add(btn); 
    } 
} 
0

Существует встроенный в пути своего рода объект имеет защищенный метод, называемый MemberwiseClone, который, как предполагается сделать высокий клон уровня всех членов вашего объекта. Вы можете прочитать об этом здесь:

ICloneable Interface: Поддерживает клонирование, которое создает новый экземпляр класса с тем же значением, что и существующий экземпляр.

Интерфейс ICloneable позволяет предоставить индивидуальную реализацию, которая создает копию существующего объекта. Интерфейс ICloneable содержит один элемент - метод Clone, который предназначен для обеспечения поддержки клонирования, кроме тех, которые предоставляются Object.MemberwiseClone. Дополнительные сведения о клонировании, глубинах и мелкой копии и примеры см. В методе Object.MemberwiseClone.

http://msdn.microsoft.com/en-us/library/system.icloneable.aspx

public class ControlCloner<T> 
{ 
    public T CloneObject(T sourceObject) 
{ 
    T newObject = new T(); 

    // Set properties & events of newObject using reflection... look at the methods available on the Type class. 
     return newObject; 
    } 
} 
+0

Хотя Перетаскивание работает, кнопка оригинал перемещается. Мне действительно нужна копия этой кнопки для панели 2. –

+0

Я рассказываю об интерфейсе, как создать новый объект (копию существующего объекта). –