自定义一个控件,继承ListView

解决方案 »

  1.   

    同样的问题
    看这里http://topic.csdn.net/u/20080708/18/9b794080-b1d6-4243-9bbc-b43b9e96140f.html
      

  2.   


            #region 上下排序
            private void tsmiPLItemUp_Click(object sender, EventArgs e)
            {
                if (pOVLPlaylist.SelectedObjects.Count == 1)
                {
                    List<PlaylistFiles> plist = new List<PlaylistFiles>();
                    int index=pOVLPlaylist.SelectedIndex;
                    plist.AddRange(PlaylistT);
                    plist.RemoveAt(index);
                    plist.Insert(index - 1, PlaylistT[pOVLPlaylist.SelectedIndex]);
                    InitOLVPlayList(plist);
                    PlaylistT.Clear();
                    PlaylistT.AddRange(plist);
                    pOVLPlaylist.Items[index - 1].Selected = true;
                    pOVLPlaylist.Items[index - 1].Focused = true;            }
            }
            private void tsmiPLItemDown_Click(object sender, EventArgs e)
            {
                            //pOVLPlaylist.Items[pOVLPlaylist.SelectedIndex].Selected = false;
                //pOVLPlaylist.Items[pOVLPlaylist.SelectedIndex + 1].Selected = true;
                //pOVLPlaylist.Items[pOVLPlaylist.SelectedIndex].Focused = false;
                //pOVLPlaylist.Items[pOVLPlaylist.SelectedIndex + 1].Focused = true;
                //pOVLPlaylist.EnsureVisible(pOVLPlaylist.SelectedIndex);
                if (pOVLPlaylist.SelectedObjects.Count == 1)
                {
                    List<PlaylistFiles> plist = new List<PlaylistFiles>();
                    int index = pOVLPlaylist.SelectedIndex;
                    plist.AddRange(PlaylistT);
                    plist.RemoveAt(index);
                    plist.Insert(index + 1, PlaylistT[pOVLPlaylist.SelectedIndex]);
                    InitOLVPlayList(plist);
                    PlaylistT.Clear();
                    PlaylistT.AddRange(plist);
                    pOVLPlaylist.Items[index + 1].Selected = true;
                    pOVLPlaylist.Items[index + 1].Focused = true;            }
                        }        int LastIndexOfPlaylistT()
            {
                int lio = -1;
                for (int so = 0; so < pOVLPlaylist.SelectedObjects.Count; so++)
                {
                    int index = pOVLPlaylist.IndexOf(pOVLPlaylist.SelectedObjects[so]);
                    //MessageBox.Show(index.ToString());
                    PlaylistFiles item = pOVLPlaylist.SelectedObjects[so] as PlaylistFiles;
                    foreach (PlaylistFiles plf in PlaylistT)
                    {
                        if (item.FileName == plf.FileName)
                        {
                            lio = PlaylistT.LastIndexOf(plf);                    }
                    }
                }
                return lio;
            }
            #endregion
    这个是我公司项目中刚实现的,简单解释下
    List<PlaylistFiles>是一个节目单的数组对象,我用
    phillip_piper<[email protected]>
    开源控件objectlistview 声明---》pOVLPlaylisttsmiPLItemUp是右键上下文菜单
    LastIndexOfPlaylistT用来找你选中项的对象索引我代码意思是,先移除选中PlaylistFiles对象A,再把对象A插回List<PlaylistFiles>,再更新界面
    办法笨了点,见笑了
    有好办法的兄弟多指点
    [email protected]