Thanks memeloo.
I have done it too !!!
I think you couldn't understand me well ! let's explain more :

I'm working with SQL to LINQ,
before I use ListView in VirtulMode, whenever I was getting a query with LINQ , I added them to the ListView with a loop :
PHP Code:
foreach (var item in query)
{
    
i++;
    
string tableNumber item.TableNumber.HasValue item.TableNumber.Value.ToString() : "";
    
ListViewItem newItem = new ListViewItem(new string[] { i.ToString(), 
                           
item.FactorType.ToString(), 
                           
item.FactorNumber.ToString(),
                           
tableNumber.ToString(),
                           
item.Price.ToString(), 
                           
DateTime.Now.ToString() });
    
newItem.Font = new Font("Tahoma"12);
    
newItem.Name "Item" i.ToString();

    
listView1.Items.Add(newItem);//Exception

The mount of data was too large, so I decided to use VirtualMode.
Next, I implemented listView1_RetrieveVirtualItem as I read it on MSDN.

PHP Code:
listView1.VirtualMode true;
listView1.VirtualListSize query.Count();

listView1.RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(this.listView1_RetrieveVirtualItem)
void listView1_RetrieveVirtualItem(object senderRetrieveVirtualItemEventArgs e)
{
    
e.Item = new ListViewItem(e.ItemIndex.ToString());

But now I receive an exception on the line that I marked it in above foreach loop.

My Problem :
I don't now, how I can add new item in VitualMode ?

Do you understand what I mean ?