2015-07-10 2 views
2

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

Ситуация:

У меня есть форма под названием frm1. Я хочу, чтобы передать его в качестве параметра

myfunc(ref frm1) 

Я бы тогда сделать

private void myfunc(ref Form frm1) 

It says : frm1 is a type but is used as a variable. 

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

Проблема:

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

+1

форма является классом. Ваш класс, вероятно, называется Form1. Измените имя из формы -> Form1, и это может сработать (если не добавить больше кода) – Blaatz0r

+1

Почему вы используете 'ref'? Вам, вероятно, это не нужно. – Rik

+0

Если у него большие изображения (например) в его форме, я бы воспользовался ссылкой. – Blaatz0r

ответ

3

Что-то не так с тем, как вы передаете параметр. Вы определенно проходите в экземпляре, а не в типе?

Вот рабочий пример.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     this.Name = "form"; 

     Form f = this; 

     doSomethingWithForm(f); 
    } 

    private void doSomethingWithForm(Form f) 
    { 
     Console.WriteLine(f.Name); 
    } 
} 
+0

спасибо много! передавая это вместо имени формы! Вероятно, потому что имя формы также используется по умолчанию в качестве имени класса? – Cher

+0

Вам не нужно передавать какие-либо параметры. Просто укажите «this» внутри метода. –

+0

Я не знал контекста, в котором этот метод будет использоваться, поэтому я добавил параметр на случай, если он не будет находиться в том же классе. Имя, которое вам нужно передать, будет переменной, ссылающейся на конкретный экземпляр Form1. Посмотрите в program.cs в своем проекте. Там вы сможете увидеть экземпляр формы1. – kenjara

0

Я создал одну функцию. Я думаю, это поможет вам. Я использую это в своей практике.

-> функция ниже:

public void showForm(Form _form, Form _main) { 
if (_main != null) 
{ 
if (_main.ActiveMdiChild != null) 
{ 
    _main.ActiveMdiChild.Close(); 
} 
_form.MdiParent = _main; 
_form.Activate(); 
_form.Show(); 
} 
else 
{ 
_form.Activate(); 
_form.ShowDialog(); 
} 

-> как использовать его:

objLib.showForm(new frmMain(), null); 

ИЛИ

objLib.showForm(new frmNewspaper(), this); 

Спасибо

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