在WinForm的ListView中,当我选择Items中的一个时,这个元素当然是高亮选择状态,可是如果这个选择的元素不是第一个的时候,在第一个元素上会有一个虚的选择框,当在ListView上通过上下光标移动的时候会从这个虚的选择框开始移动,而原来选择的元素就不再选择上了,我怎么能做到当选择一个元素时这个虚的框也在选择的元素上呢?

解决方案 »

  1.   

    我想你应该是在 ListView 所在 Form 的构造函数中执行上面的操作吧。正确的方法应该是在 FormLoad 事件处理方法中执行 ListView 的操作,如下面代码:private void Form1_Load(object sender, System.EventArgs e)
    {
    this.listView1.Items[1].Selected = true;
    this.listView1.Items[1].Focused = true;
    }首先,在 Form 的构造函数中设置 Selected 属性可以起作用,但是 Focused 不行,因为它是一种动作(我猜的),在 Form 的实例化过程中是无法实现的。所以要在 Form 实例化以后,在加载的过程中运行上面的代码。类似的问题会出现在 TreeView 的水平滚动条,比如你在 Form 的构造函数中给 TreeView 加 Item,然后水平滚动条会在不应该出现的时候出现,也是通过把初始化代码放在FormLoad事件处理方法中解决的。
      

  2.   

    private void listView_SelectedIndexChanged(...)
    {
        if(this.listView1.SelectedItems.Count > 0)
            this.listView1.SelectedItems[0].Focused = true;
    }
      

  3.   

    楼上说的极对,只是我没有想到有一个Focused属性,学习到了,多谢了:)
    给分!