请教高手们,在我选中ListView某行数据进行编辑后,在数据重载的时候怎么把光标定位到刚刚那行的数据。(即在数据刷新之后光标要自动定位到刚刚被选中编辑的那行。。)

解决方案 »

  1.   

    参考如下代码:
    private void button1_Click(object sender, EventArgs e)
    {
        #region 记忆选中的项
        string key = null;
        if (listView1.FocusedItem != null)
            key = listView1.FocusedItem.Text;
        #endregion 记忆选中的项    #region 重新载入
        listView1.Items.Clear();
        for (int i = 0; i < 100; i++)
            listView1.Items.Add(i.ToString());
        #endregion 重新载入    #region 恢复记忆
        if (key != null)
            for (int i = 0; i < listView1.Items.Count; i++)
            {
                if (listView1.Items[i].Text == key)
                {
                    listView1.Items[i].Selected = true;
                    listView1.Items[i].Focused = true;
                    listView1.EnsureVisible(i); // 使该项可见
                    listView1.Focus();
                    break;
                }
            }
        #endregion 恢复记忆
    }
      

  2.   

    直接在ListView的Item中修改,不重新加载项目。
      

  3.   

    ListView
      

  4.   


     public void BindLstRoomTypes()
            {
                try
                {
                    RoomType myRt = new RoomType();
                    RoomTypeInfo model = new RoomTypeInfo();                RoomTypeInfo[] models = myRt.GetRoomType();
                    this.lstRoomType.Items.Clear();
                    for (int i = 0; i < models.Length; i++)
                    {
                        ListViewItem Item = new ListViewItem(models[i].RoomTypeID.ToString());
                        Item.SubItems.Add(models[i].RoomTypeName);
                        Item.SubItems.Add(models[i].RoomPrice.ToString());
                        Item.SubItems.Add(models[i].RoomPrice2.ToString());
                        Item.SubItems.Add(models[i].RoomDeposit.ToString());
                        Item.SubItems.Add(models[i].Rate.ToString());
                        Item.SubItems.Add(models[i].Beds.ToString());                    if (models[i].AirCondition)
                            Item.SubItems.Add("Y");
                        else
                            Item.SubItems.Add("N");
                        if (models[i].WaterHeater)
                            Item.SubItems.Add("Y");
                        else
                            Item.SubItems.Add("N");
                        if (models[i].BroadBand)
                            Item.SubItems.Add("Y");
                        else
                            Item.SubItems.Add("N");
                        if (models[i].Colorcast)
                            Item.SubItems.Add("Y");
                        else
                            Item.SubItems.Add("N");
                        if (models[i].IceBox)
                            Item.SubItems.Add("Y");
                        else
                            Item.SubItems.Add("N");
                        Item.SubItems.Add(models[i].Re);                    lstRoomType.Items.Add(Item);
                    }
                    lstRoomType.Items[0].Selected = true;            }
                catch (Exception ex)
                {
                    MessageBox.Show("读取类型时出错!!!" + ex.Message);
                }
            }以上是重载代码!!!
      

  5.   

    public void BindLstRoomTypes()
    {
        try
        {
            #region 记忆选中的项
            string key = null;
            if (lstRoomType.FocusedItem != null)
                key = lstRoomType.FocusedItem.Text;
            #endregion 记忆选中的项        RoomType myRt = new RoomType();
            RoomTypeInfo model = new RoomTypeInfo();        RoomTypeInfo[] models = myRt.GetRoomType();
            this.lstRoomType.Items.Clear();
            for (int i = 0; i < models.Length; i++)
            {
                ListViewItem Item = new ListViewItem(models[i].RoomTypeID.ToString());
                Item.SubItems.Add(models[i].RoomTypeName);
                Item.SubItems.Add(models[i].RoomPrice.ToString());
                Item.SubItems.Add(models[i].RoomPrice2.ToString());
                Item.SubItems.Add(models[i].RoomDeposit.ToString());
                Item.SubItems.Add(models[i].Rate.ToString());
                Item.SubItems.Add(models[i].Beds.ToString());            if (models[i].AirCondition)
                    Item.SubItems.Add("Y");
                else
                    Item.SubItems.Add("N");
                if (models[i].WaterHeater)
                    Item.SubItems.Add("Y");
                else
                    Item.SubItems.Add("N");
                if (models[i].BroadBand)
                    Item.SubItems.Add("Y");
                else
                    Item.SubItems.Add("N");
                if (models[i].Colorcast)
                    Item.SubItems.Add("Y");
                else
                    Item.SubItems.Add("N");
                if (models[i].IceBox)
                    Item.SubItems.Add("Y");
                else
                    Item.SubItems.Add("N");
                Item.SubItems.Add(models[i].Re);            lstRoomType.Items.Add(Item);
            }        #region 恢复记忆
            if (key != null)
                for (int i = 0; i < listView1.Items.Count; i++)
                {
                    if (lstRoomType.Items[i].Text == key)
                    {
                        lstRoomType.Items[i].Selected = true;
                        lstRoomType.Items[i].Focused = true;
                        lstRoomType.EnsureVisible(i); // 使该项可见
                        lstRoomType.Focus();
                        break;
                    }
                }
            #endregion 恢复记忆    }
        catch (Exception ex)
        {
            MessageBox.Show("读取类型时出错!!!" + ex.Message);
        }
    }