하위 항목을 클릭 할 때 전체 행을 선택하려면 FullRowSelect
속성 인 ListView
을 사용해보십시오. 는 하위 항목을 더블 클릭을 처리하기 위해,이 시도 :리스트 뷰에서 하위 항목의 텍스트를 편집 할 최종 사용자를 허용하려면
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewHitTestInfo hit = listView1.HitTest(e.Location);
// Use hit.Item
// Use hit.SubItem
}
, 내가 가장 쉬운 방법은 그리드 컨트롤을 사용하는 것입니다 두려워 해요. 다른 방법은 다음과 같이 시도하는 것입니다.
private readonly TextBox txt = new TextBox { BorderStyle = BorderStyle.FixedSingle, Visible = false };
public Form1()
{
InitializeComponent();
listView1.Controls.Add(txt);
listView1.FullRowSelect = true;
txt.Leave += (o, e) => txt.Visible = false;
}
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewHitTestInfo hit = listView1.HitTest(e.Location);
Rectangle rowBounds = hit.SubItem.Bounds;
Rectangle labelBounds = hit.Item.GetBounds(ItemBoundsPortion.Label);
int leftMargin = labelBounds.Left - 1;
txt.Bounds = new Rectangle(rowBounds.Left + leftMargin, rowBounds.Top, rowBounds.Width - leftMargin - 1, rowBounds.Height);
txt.Text = hit.SubItem.Text;
txt.SelectAll();
txt.Visible = true;
txt.Focus();
}
wpf, winform, else? – har07
플랫폼은 winform –
입니다. ListView 컨트롤을 사용하여이 작업을 수행 할 수는 있지만 설정하는 것은 어렵습니다. 대신 Grid 컨트롤을 사용하는 것에 대해 생각해 보셨습니까? –