OriginalGriff
frmproperty-это метод, и он является общедоступным , поэтому все, что вам нужно, - это экземпляр формы, чтобы вызвать его. И вот в чем загвоздка - как получить экземпляр формы? должны ли вы получить экземпляр формы? Трудно сказать, не зная больше о том, как связаны ваши формы.
Существует три различных сценария:
1) Form1 создает и открывает экземпляр Form2 (Form1 - это "родитель", Form2 - " потомок")
2) Form2 создает и открывает экземпляр Form1 (Form2 - это "родитель", Form1 - " потомок")
3) Form3 создает и открывает как Form1, так и Form2. (Форма 3 - это "родитель", Форма 1 и форма 2 - " дети")
То, как это должно быть обработано, зависит от того, какой сценарий использует ваше программное обеспечение, потому что "дети" не должны знать, что "родители" вообще существуют, не говоря уже о том, что они представляют собой класс и, следовательно, какие свойства и методы они содержат.
Смотрите один из них:
Передача информации между двумя формами, Часть 1: Родитель-Ребенок[^]
Передача информации между двумя формами, Часть 2: Ребенок-Родитель[^]
Передача информации между двумя формами, Часть 3: Ребенок ребенку[^]
Они в основном имеют дело со свойствами, но то же самое относится и к методам.
Цитата:
значит, моя идея не может сработать?
В принципе, да-в той форме, в какой вы пытаетесь это сделать, во всяком случае.
Ты пытаешься сделать что-то неправильное. Есть способы сделать то, что вы хотите:
1) Создайте статический метод (или метод расширения) для класса формы и передайте ему экземпляр формы, который вы хотите "настроить" - это будет работать только в том случае, если метод придерживается стандартных свойств и методов формы, он не может делать ничего специфичного для производного класса.
public static class GeneralMethods
{
public static void Adjust(Form f)
{
f.CenterToScreen();
f.Text = "frmlogin";
f.MaximizeBox = false;
f.MinimizeBox = false;
}
}
...
GeneralMethods.Adjust(this);
2) Создайте базовый класс для всех ваших форм, который содержит метод, и выведите из него свои формы. Базовый метод доступен непосредственно во всех производных формах без какой-либо ссылки на базовый класс.
public class MyForm : From
{
public void Adjust()
{
CenterToScreen();
Text = "frmlogin";
MaximizeBox = false;
MinimizeBox = false;
}
}
...
public class Form1 : MyForm
{
...
Adjust();
...
}
public class Form2 : MyForm
{
...
Adjust();
...
}
На самом деле моя форма была бы
abstract
форма, но это создает проблемы с дизайнером Visual studio, так что на данный момент просто оставьте все как есть!
OriginalGriff
Конечно, это не так - это метод Form1, поэтому он действует на экземпляры Form1, он даже не знает о существовании Form2, не говоря уже о том, какими свойствами он обладает!