listview can't work in console mode

  • Thread starter Thread starter justdo
  • Start date Start date
J

justdo

Hi, I am writing the unit test for our application. It use "listview
component" in some functions. The following code work fine and get c =
1 in Windows Application mode, but fail in unit test which get c = 0 :

listView2.Items.Add("xxx");
listView2.Items[0].Selected = true;
int c = listView2.SelectedItems.Count;

in unit test, we create listView2 by this way:

class CreateListViews
{
private ListView listview1;
private System.Windows.Forms.ColumnHeader Number;
private System.Windows.Forms.ColumnHeader Start;
private System.Windows.Forms.ColumnHeader End;
private System.Windows.Forms.ColumnHeader Event;
private System.Windows.Forms.ColumnHeader Length;
public ListView GetListViews()
{
listview1 = new System.Windows.Forms.ListView();
this.Number = new System.Windows.Forms.ColumnHeader();
this.Start = new System.Windows.Forms.ColumnHeader();
this.End = new System.Windows.Forms.ColumnHeader();
this.Event = new System.Windows.Forms.ColumnHeader();
this.Length = new System.Windows.Forms.ColumnHeader();
listview1.Columns.AddRange(new
System.Windows.Forms.ColumnHeader[] {
this.Number,
this.Start,
this.End,
this.Event,
this.Length});
return listview1;
}
}

do someone know why, and what wrong?
 
Hi Justdo,

I also faced a similar problem before. I think it has some sort of a bug. If
you add the control to a parent - if windows forms, then it will work. (eg.
Controls.Add(listView2);). As an alternate, in console application you can
use

Rectangle rect = listView2.Items[0].Bounds;

before getting the count.

HTH

Cheers,
Chester
 
Hi Chester,

thx for your response, the second method is in effect, but the method
using windows forms is fail, the code as following:

class CreateListViews
{
//added
static Form manageForm = new Form();
private ListView listview1;
private System.Windows.Forms.ColumnHeader Number;
private System.Windows.Forms.ColumnHeader Start;
private System.Windows.Forms.ColumnHeader End;
private System.Windows.Forms.ColumnHeader Event;
private System.Windows.Forms.ColumnHeader Length;
public ListView GetListViews()
{
listview1 = new System.Windows.Forms.ListView();
this.Number = new System.Windows.Forms.ColumnHeader();
this.Start = new System.Windows.Forms.ColumnHeader();
this.End = new System.Windows.Forms.ColumnHeader();
this.Event = new System.Windows.Forms.ColumnHeader();
this.Length = new System.Windows.Forms.ColumnHeader();
listview1.Columns.AddRange(new
System.Windows.Forms.ColumnHeader[] {
this.Number,
this.Start,
this.End,
this.Event,
this.Length});
this.listview1.FullRowSelect = true;
this.listview1.GridLines = true;
this.listview1.LabelEdit = true;
listview1.TabIndex = 0;

//added
manageForm.Controls.Add(listview1);
return listview1;
}
}

Is anything I did wrong?
 
Back
Top