2009-12-09 3 views

ответ

0

Если я не уверен, действительно не хватает что-то фундаментальное, вы не можете выбрать подэлемент. Вы можете выбрать подпункт в первом столбце, или вы можете установить для свойства FullRowSelect значение True. Ни то, ни другое не поможет вам определить, какой элемент может быть интересен пользователю, нет способа угадать, что копировать в буфер обмена.

Используйте DataGridView, чтобы обойти это.

+0

вы можете определить, что subitem, когда мышь была нажата с помощью функции ListView.HitTest() –

+0

да, это похоже на взломать, а datagridview - хороший выбор, если это сработает для вас. –

2

Каждый элемент внутри элемента управления ListView представлен ListViewItem. ListViewItem имеет свойство SubItems, которое начинается с самого первого столбца данных в элементе управления ListView.

Для копирования данных из колонки получите ListViewItem и с кодом Text собственности, имеющейся в собственности SubItems.

Например,

int theSelectedIndex = 0; // this should be the index of your selected item in the list 
int theSubItemIndex = 0; // this should be the index of the subitem whose text you want to copy 

ListViewItem lvItem = listView1.SelectedItems[theSelectedIndex]; 
string text = lvItem.SubItems[theSubItemIndex].Text; 
0

Следующий фрагмент кода даст вам подменят значение элемента и дополнительное имя столбца пункта (если вы храните имя Col в значении тега вспомогательного элемента при его создании.

Point workItemsListViewLastHit; 

private void workItemsListView_MouseUp(object sender, MouseEventArgs e) 
{ 
    workItemsListViewLastHit = e.Location; 
} 


private void workItemsListView_DoubleClick(object sender, EventArgs e) 
{ 
    ListViewHitTestInfo HTI = workItemsListView.HitTest(workItemsListViewLastHit); 

    if (HTI.Item != null) 
    { 
       string field = HTI.SubItem.Tag as string; 
       string value = HTI.SubItem.Text; 
    } 
} 
Смежные вопросы