2012-05-11 3 views
0

Я пытаюсь создать несколько экземпляров формы. Например, у меня есть form1 и form2 , и в List1 есть ListView.Создание экземпляров нескольких форм

Когда-либо щелкнули элемент в ListView, он создаст новый экземпляр формы2.

Form2 listview1.FocusedItem.SubItems[0].Text = new Form2(); 
listview1.FocusedItem.SubItems[0].Text.Show(); 

Но C# не позволяет мне это делать, любая идея? (Да .. я получил ошибки: D)

Хорошо, идея .. скажем я хочу иметь 3 экземпляра form2,

Form2 f21 = new Form2();

Form2 f22 = new Form2();

Form2 f23 = new Form2();

, и теперь у меня будет 3 формы2, но что, если я не знаю, сколько форм [s] я могу создать? (динамически создавать форму базы элементов в списке)

На самом деле это, возможно, не правильный способ это сделать ... Любое решение оценивается.

+6

я даже не знаю, с чего начать это ... то, что вы пытаетесь сделать? – MilkyWayJoe

+4

'.Text' не является формой, это строка. – LarsTech

+0

Я думаю, что вы проблема глубже, чем ваши строки кода, это ваше понимание OO, типов собственности и экземпляров. Вы можете скопировать предложения папок от людей ниже, но это бесполезно, если вы этого не понимаете. Сначала вы можете запустить несколько руководств. – Roast

ответ

3

listview1.FocusedItem.SubItems[0].Text является string свойство, вы не можете назначитьSystem.Windows.Forms.Form для string.

не очень понятно, что вы собираетесь достичь здесь, но, может быть что-то вроде этого

new Form2().Show(); 

по щелчку пункта будет достаточно для вас.

Если это не то, о чем вы просите, уточните пожалуйста.

EDIT

Для управления произвольного количества форм, вы можете сделать что-то вроде:

//somewhere in the code a global collection 
var formsCollection = new List<Form>(); 

и на клик по пункту:

formsCollection.Add(new Form2()); 
formsCollection[formsCollection.Count-1].Show(); 

Другой вещь в mantion это что может быть, вам нужно будет найти определенную форму в коллекции (для я причина). Вы можете назначить некоторое специальное свойство Form2, некоторому уникальному идентификатору, чтобы иметь возможность найти его после, по запросу.

+0

Я редактировал мой вопрос. : D, я знаю, что мы не можем назначить System.Windows.Forms.Form для строки, но как, если я хочу, чтобы форма была динамической? – user1046088

+0

Привет, это должно быть то, что я ищу. Может быть, я google с неправильными «ключевыми словами»: D в любом случае, оцените и поблагодарите за помощь. Хорошего дня. – user1046088

+0

@ пользователь1046088: добро пожаловать. – Tigran

3

Я полагаю, что, не допуская этого, означает, что вы получаете какую-то ошибку. Это синтаксическая ошибка? Это было бы моей догадкой.

Кроме того, почему вы создаете новую форму для каждого нового клика? Я бы рекомендовал повторное использование существующего объекта или надлежащее уничтожение/разыменование старого.

Я считаю, что есть проблема с линией

Form2 listview1.FocusedItem.SubItems[0].Text = new Form2(); 

Вы не можете назначить новые формы текстовой собственности и, кроме того, в этом виде заявления вы должны указать имя переменной, а не ссылка где-то в другом месте. вы имели в виду что-то вроде:

Form2 f2 = new Form2(listview1.FocusedItem.SubItems[0].Text); 
f2.Show(); 
+0

Спасибо за ответ, я просмотрел Google и нашел ответ, похожий на ваш. но мне нужно отправлять разные данные в каждую форму для целей мониторинга. – user1046088

Смежные вопросы