Se analizziamo il sorgente, possiamo notare che al momento del new della Form2, il programma passa nel costruttore della Form:
Fa la InitializeComponent e successivamente la MessageBox, che logicamente visualizza una stringa vuota.
Quindi terminato il costruttore, il programma torna nell'evento ListView1DoubleClick e assegna il valore alla variabile _IDCliente.
Da ora in poi la variabile privata in _IDCliente contiene il valore corretto.
In questi casi, e' piu' facile fare un overload del costruttore e passare il codice IDCliente come parametro in questo modo
codice:public Form2(string idCliente) { InitializeComponent(); _IDCliente = idCliente; MessageBox.Show(_IDCliente); }