IniEdit中listview的一些使用

1 listview 拖动某项

/// <summary>
        /// 当拖动某项时触发;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lvwVarity_ItemDrag(object sender, ItemDragEventArgs e)
        {
            try
            {
                lvwVarity.DoDragDrop(e.Item, DragDropEffects.Move);
            }
            catch (Exception ex)
            {
                _logDescription = "lvwVarity_ItemDrag exception " + ex.Message;
                _logHelper.WriteLog(LogStyle.eError, _logDescription);
            }
        }

        /// <summary>
        /// 鼠标拖动某项至某个区域;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lvwVarity_DragEnter(object sender, DragEventArgs e)
        {
            try
            {
                e.Effect = DragDropEffects.Move;
            }
            catch (Exception ex)
            {
                _logDescription = "lvwVarity_DragEnter exception " + ex.Message;
                _logHelper.WriteLog(LogStyle.eError, _logDescription);
            }
        }

        /// <summary>
        /// 当拖动鼠标至某项上方时;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lvwVarity_DragOver(object sender, DragEventArgs e)
        {
            try
            {
                Point ptScreen = new Point(e.X, e.Y);
                Point ptlvw = lvwVarity.PointToClient(ptScreen);
                ListViewItem item = lvwVarity.GetItemAt(ptlvw.X, ptlvw.Y);
                if (null != item)
                {
                    item.Selected = true;
                }
            }
            catch (Exception ex)
            {
                _logDescription = "lvwVarity_DragOver exception" + ex.Message;
                _logHelper.WriteLog(LogStyle.eError, _logDescription);
            }
        }

        /// <summary>
        /// 拖动到了目的地;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lvwVarity_DragDrop(object sender, DragEventArgs e)
        {
            try
            {
                ListViewItem draggedItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
                Point ptScreen = new Point(e.X, e.Y);
                Point ptLvw = lvwVarity.PointToClient(ptScreen);
                ListViewItem targetItem = lvwVarity.GetItemAt(ptLvw.X, ptLvw.Y);

                if (null == targetItem)
                {
                    return;
                }
                lvwVarity.Items.Insert(targetItem.Index, (ListViewItem)draggedItem.Clone());
                if (targetItem.Index - 1 > 0)
                {
                    lvwVarity.Items[targetItem.Index - 1].Selected = true;
                }
                lvwVarity.Items.Remove(draggedItem);

                ReSetIndex();
            }
            catch (Exception ex)
            {
                _logDescription = "lvwVarity_DragDrop exception" + ex.Message;
                _logHelper.WriteLog(LogStyle.eError, _logDescription);
            }
        }


2 ListView 某一项向上或向下


 /// <summary>
        ///  向上移动;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void menuUp_Click(object sender, EventArgs e)
        {
            _logDescription = "Enter menuUp_Click ";
            _logHelper.WriteLog(LogStyle.eNormal, _logDescription);
            try
            {
                if (null != currentListView && currentListView.Equals(lvwVarity))
                {
                    if (lvwVarity.SelectedItems.Count > 0)
                    {
                        if (movingVarityIndex - 1 >= 0 && null != movingVarityItem)
                        {
                            lvwVarity.Items.Remove(lvwVarity.SelectedItems[0]);
                            lvwVarity.Items.Insert(movingVarityIndex - 1, movingVarityItem);
                            ReSetIndex();

                            movingVarityIndex -= 1;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logDescription = "menuUp_Click Exception: " + ex.Message;
                _logHelper.WriteLog(LogStyle.eError, _logDescription);
            }

            _logDescription = "Out menuUp_Click ";
            _logHelper.WriteLog(LogStyle.eNormal, _logDescription);
        }

        /// <summary>
        /// 向下移动;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void menuDown_Click(object sender, EventArgs e)
        {
            _logDescription = "Enter menuDown_Click ";
            _logHelper.WriteLog(LogStyle.eNormal, _logDescription);
            try
            {
                if (null != currentListView && currentListView.Equals(lvwVarity))
                {
                    if (lvwVarity.SelectedItems.Count > 0)
                    {
                        if (movingVarityIndex + 1 < lvwVarity.Items.Count && null != movingVarityItem)
                        {
                            lvwVarity.Items.Remove(lvwVarity.SelectedItems[0]);
                            lvwVarity.Items.Insert(movingVarityIndex + 1, movingVarityItem);
                            ReSetIndex();

                            movingVarityIndex += 1;
                        }
                    }
                }
                else if (null != currentListView && currentListView.Equals(lvwConvertInfo))
                {
                    if (lvwConvertInfo.SelectedItems.Count > 0)
                    {
                        if (movingConInfoItemIndex + 1 < lvwConvertInfo.Items.Count && null != movingConvertInfoItem)
                        {
                            lvwConvertInfo.Items.Remove(lvwConvertInfo.SelectedItems[0]);
                            lvwConvertInfo.Items.Insert(movingConInfoItemIndex + 1, movingConvertInfoItem);
                            ReSetIndex();

                            movingConInfoItemIndex += 1;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logDescription = "menuDown_Click Exception: " + ex.Message;
                _logHelper.WriteLog(LogStyle.eError, _logDescription);
            }

            _logDescription = "Out menuDown_Click ";
            _logHelper.WriteLog(LogStyle.eNormal, _logDescription);
        }


3 查找符合某个条件的item


 if (null != currentListView && currentListView.Equals(lvwVarity)) // 在varity表里查找;
                {

                    // 查找出符合条件的所有项;
                    IEnumerable<ListViewItem> searchedItems = lvwVarity.Items.Cast<ListViewItem>().ToList<ListViewItem>().Where(x => x.SubItems[0].Text.Trim().Contains(searchText.Trim().ToUpper()) || x.SubItems[0].Text.Trim().Contains(searchText.Trim().ToLower())
                                                                                                                                || x.SubItems[1].Text.Trim().Contains(searchText.ToUpper()) || x.SubItems[1].Text.Trim().Contains(searchText.ToLower())
                                                                                                                                || x.SubItems[2].Text.Trim().Contains(searchText.ToUpper()) || x.SubItems[2].Text.Trim().Contains(searchText.ToLower())
                                                                                                                                || x.SubItems[3].Text.Trim().Contains(searchText.ToUpper()) || x.SubItems[3].Text.Trim().Contains(searchText.ToLower())
                                                                                                                                || x.SubItems[4].Text.Trim().Contains(searchText.ToUpper()) || x.SubItems[4].Text.Trim().Contains(searchText.ToLower())
                                                                                                                                || x.SubItems[5].Text.Trim().Contains(searchText.ToUpper()) || x.SubItems[5].Text.Trim().Contains(searchText.ToLower())
                                                                                                                                || x.SubItems[6].Text.Trim().Contains(searchText.ToUpper()) || x.SubItems[6].Text.Trim().Contains(searchText.ToLower()));
                    if (searchedItems.Count() > 0)
                    {
                        // 找到最后一个时,返回到第一个;
                        if (varitysearchIndex == searchedItems.Count())
                        {
                            varitysearchIndex = 0;
                        }

                        ListViewItem item = searchedItems.ElementAt(varitysearchIndex);
                        if (null != item)
                        {
                            lvwVarity.Focus();
                            item.Selected = true;
                            item.EnsureVisible();

                            varitysearchIndex++;
                        }
                    }
                }

4 加载项时显示慢

原因:每加载一项,就刷新一次列宽,非常耗时

改进:加载完项后,可以一次性刷新列宽

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值