Aquí se muestra un ejemplo de un método para permitir que las clases anidadas para acceder a los controles de formulario sin pasar el formulario como una PARÁMETRO DEL CONSTRUCTOR NESTED CLASS:
public partial class Form1 : Form
{
public int nWow;
public Form1()
{
InitializeComponent();
Inner.AssignMe(this); // This is where the real action is.
}
class Inner
{
static Form1 Me;
static Inner(){} // empty static constructor necessary
// Called AssignMe in the Form1 constructor in this code,
// but this can be generalized to any nested class.
public static void AssignMe(Form1 form) { Me = form; }
public Inner() { Me.nWow = 1; } // Now u can access public Form1
} // members and methods even from the nested
} // class' constructor.
Me di cuenta de esto basado en o n El mensaje anterior de user3567816, que aunque conciso y con 0 votos, nunca es, con mucho, la solución más elegante y única. Nadie más está dando este consejo a este tipo de pregunta. ¡NO MÁS PERFECTAMENTE LOS PARÁMETROS DE LA FORMA REDUNDANTE EN CONSTRUCTORES DE CLASES ANIDADAS! ¡Esto es absolutamente genial!
No pude evitar dar un giro de VB.Net con el uso del nombre de variable estática Me. Sonrisa afectada.
Como no puede llamarlo directamente (según MSDN) –
@Hightechrider técnicamente tampoco puede * llamar * a un constructor normal. La expresión 'new Foo (x)' no es una llamada explícita al constructor, el constructor se invoca en la memoria devuelta desde 'new'. – Motti
posible duplicado de [Pasar parámetros estáticos a una clase] (http://stackoverflow.com/questions/2767017/passing-static-parameters-to-a-class) – nawfal