2012-01-16 3 views
1

Итак, у меня есть objectlistview (на самом деле treelistview). Я хочу, чтобы иметь возможность перетащить элемент из этого на RichTextBox, и он вставить свойство перемещенного элемента (в данном случае Default_Heirarchy_ID)ObjectListView перетащить на RichTextBox

objectmodel В TreeListView является List<T> класса под названием SpecItem.

Это то, что я до сих пор:

public frmAutospecEditor(SpecItem siThis_, List<SpecItem> lstStock_) 
    { 
     InitializeComponent(); 

     txtFormula.DragEnter += new DragEventHandler(txtFormula_DragEnter); 
     txtFormula.DragDrop += new DragEventHandler(txtFormula_DragDrop); 
     ... 
    } 

    void txtFormula_DragEnter(object sender, DragEventArgs e) 
    { 
     e.Effect = DragDropEffects.Copy; 
    } 

    private void tlvSpecItem_ItemDrag(object sender, ItemDragEventArgs e) 
    { 
     int intID = ((SpecItem)tlvSpecItem.GetItem(tlvSpecItem.SelectedIndex).RowObject).Default_Heirarchy_ID ??0; 
     DoDragDrop(intID, DragDropEffects.Copy); 
    } 
    private void txtFormula_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) 
    { 

     object objID = e.Data.GetData(typeof(String)); 
     //this is where it goes wrong - no matter what I try to do with this, it 
     //always returns either null, or the text displayed for that item in the TreeListView,    
     //NOT the ID as I want it to. 
     string strID = (string)objID; 
     txtFormula.Text = strID; 
    } 

Где я буду неправильно?

Приветствия

ответ

1

Волок является контроль вы хотите взять данные из (ваш OLV). The Drop - это элемент управления назначения (ваше текстовое поле). Итак:

Настройте свойство вашего OLV на IsSimpleDragSource.

В текстовом поле AllowDrop свойство true. Затем обработайте событие DragEnter вашего текстового поля и используйте параметр DragEventArgs.

Обрабатывать событие ModelDropped:

private void yourOlv_ModelDropped(object sender, ModelDropEventArgs e) 
{ 
    // If they didn't drop on anything, then don't do anything 
    if (e.TargetModel == null) return; 

    // Use the dropped data: 
    // ((SpecItem)e.TargetModel) 
    // foreach (SpecItem si in e.SourceModels) ... 

    // e.RefreshObjects(); 
} 

Подробнее: http://objectlistview.sourceforge.net/cs/dragdrop.html#ixzz1lEt7LoGr

Смежные вопросы