Предполагая, что для каждого выбранного элемента создается форма, вы можете отслеживать открытые формы в теге ListViewItem.
lv.ItemSelectionChanged += lv_ItemSelectionChanged;
private void lv_ItemSelectionChanged(Object sender, ListViewItemSelectionChangedEventArgs e)
{
if(e.IsSelected)
{
if(e.Item.Tag == null)
{
var form = new Form2();
// init Form2 here
form.Parent = this.panel1;
e.Item.Tag = form;
}
(e.Item as Form2).BringToFront();
}
}
EDIT:
С другой стороны, зачем вам создавать и переключаться между формами, которые имеют только один Edit, было бы намного проще просто заполнить TextBox содержимым файла:
ListView1.ItemActivate += ListView1_ItemActivate;
private void ListView1_ItemActivate(Object sender, EventArgs e)
{
if(ListView1.SelectedItems.Count > 0)
{
this.form2Instance.ContentsTextBox.Text = File.ReadAllText(this.rootFilesPath + @"\" + ListView1.SelectedItems.Last().Text));
}
}
И если вы хотите прочитать содержимое файла только один раз, просто сохраните содержимое файла в теге ListViewItem
ListView1.ItemActivate += ListView1_ItemActivate;
private void ListView1_ItemActivate(Object sender, EventArgs e)
{
if(ListView1.SelectedItems.Count > 0)
{
var item = ListView1.SelectedItems.Last();
if(item.Tag == null)
item.Tag = File.ReadAllText(this.rootFilesPath + @"\" + item.Text);
this.form2Instance.ContentsTextBox.Text = (string) item.Tag;
}
}