在listview上闪烁selectedindex

时间:2016-02-09 02:55:14

标签: c# winforms listview

我尝试使用timer刷新列表视图。 代码工作正常,但问题是selectedindex闪烁可能是因为数据/ ui每1秒重新加载一次。

我想要的是,当用户导航时,我希望保留selectedindex而不会闪烁当前列表突出显示。

145交易号码突出显示...由于计时器,它每1秒闪烁一次突出显示。我怎么能防止它眨眼?提前谢谢......

enter image description here

这是我的代码:

    public OrderCashieringView()
    {
        Timer time = new Timer();
        time.Interval = (10 * 100);
        time.Tick += time_Tick;
        time.Start();
    }


    void time_Tick(object sender, EventArgs e)
    {
        if (lstOrders.IsDisposed == false)
        {
            int CurrentRow = lstOrders.SelectedIndex;
            LoadDataCore();
            lstOrders.SelectedIndex = CurrentRow;
        }
    }


    void LoadDataCore()
    {
            if (txtSearchOrderNumber.Text == String.Empty)
            {
                _model = svc.GetForPayment();
            }
            else
            {
                _model = svc.GetForPayment().Where(a => a.TransactionNumber.Contains(txtSearchOrderNumber.Text)).ToArray();
            }

            if (lstOrders.InvokeRequired)
            {
                this.Invoke(new MethodInvoker(() =>
                {
                    lstOrders.DataSource = _model.ToArray();
                }));
            }
            else
            {
                lstOrders.DataSource = _model.ToArray();
            }

    }

1 个答案:

答案 0 :(得分:0)

尝试将Listview的SelectedValue绑定到属性,我假设刷新后的选择将保持不变。 SelectedIndex将刷新绑定到列表的新数据。 如果您特别需要SelectedIndex,则可以从绑定到列表视图的列表中找到所选值的索引。