昨天我嘗試實現一個支持子項編輯的新列表視圖,我的解決方案是在雙擊子項時顯示一個文本框。關鍵代碼如下:C#可編輯列表視圖
protected override void OnDoubleClick(EventArgs e)
{
Point pt = this.PointToClient(Cursor.Position);
ListViewItem curItem;
int subItemIndex = GetSubItemAt(pt.X, pt.Y, out curItem);
DoubleClickEventArgs args = new DoubleClickEventArgs(subItemIndex);
base.OnDoubleClick(args);
if (subItemIndex>=0 && !args.Cancel)
{
//StartEdit(...);
}
}
public void EndEdit(bool acceptChanges)
{
//validation
.................
.................
AfterSubItemEventArgs e = new AfterSubItemEventArgs(this.SelectedItems[0], m_editSubItemIndex, this.SelectedItems[0].SubItems[m_editSubItemIndex].Text, m_textbox.Text, false);
OnAfterSubItemEdit(e);
if (e.Cancel)
{
//....
}
else
{
//set new value
}
m_textbox.Visible = false;
m_editSubItemIndex = -1;
}
OnAfterSubItemEdit是一個事件,用戶可以做一些驗證或其他操作。我在這個方法中添加一個檢查,如果新值存在,我將首先向用戶顯示一個消息框,然後隱藏文本框。但現在,問題出現了,當我移動鼠標時,可以選擇listview項目,我不怎麼解決這個問題,我盡我所能找出了方法,但失敗了。所以,請幫助我!
是的,我知道LabelEdit屬性,但它只能編輯第一個分項目,我想編輯子項目 – user2480894
爲什麼不使用DataGridView,你可以改變外觀,使其看起來像一個ListView –
是的,我可以使用DataGridView而不是Listview,但我仍然想解決這個問題。 – user2480894