none
Acceder a un control de un formulario desde otra clase C# RRS feed

  • 问题

  • Deseo acceder a un control(Picturebox) desde otra clase.Desde la clase Nave quiero tener el control de mi Picturebox que se encuentra en mi Form1.

    Alguien me ayuda por favor.

    2018年3月3日 19:20

答案

  • Bien, primera observación: No pienses en "acceder al formulario". Piensa en "acceder a una clase". El formulario al fin y al cabo no deja de ser una clase, y acceder a un control es acceder a una propiedad de esa clase. Así que tu pregunta se traduce en "cómo acceder desde una clase a otra clase".

    Segunda observación: No tienes que pensar en "la clase" sino en "la instancia de la clase". Es decir, el formulario no es EL formulario, sino que es un "modelo" para instanciarlo y se pueden tener muchas instancias abiertas. Piensa en el Form1 abierto tres veces en pantalla. -- cada una de ellas tiene una copia del control al que quieres acceder. Incluso aunque solo lo abras una vez, el compilador no lo sabe; tienes que indicarle cuál es la instancia del Form1 que quieres usar, no vale con decir "el Form1".

    En resumidas cuentas, si el formulario lo abres así:

    Form1 frm = new Form1(); frm.Show();

    entonces lo que necesitas para acceder al control es esa variable "frm", no "Form1". Para acceder a un control, lo llamarías con frm.NombreDelControl (y no olvides marcarlo como "public" en las propiedades).

    Para acceder desde otra clase, esa clase tiene que tener acceso a la variable "frm". Dependiendo de cómo y dónde instancies esa clase habrá distintas formas de hacerle llegar "frm", por ejemplo, podrías pasársela en el constructor o a través de una propiedad.

    Nótese que esto es genérico para cualquier clase a la que quieras acceder desde otra clase, no tiene nada que ver el hecho de que casualmente "frm" resulte ser un formulario.

    2018年3月3日 20:40
    版主

全部回复

  • Bien, primera observación: No pienses en "acceder al formulario". Piensa en "acceder a una clase". El formulario al fin y al cabo no deja de ser una clase, y acceder a un control es acceder a una propiedad de esa clase. Así que tu pregunta se traduce en "cómo acceder desde una clase a otra clase".

    Segunda observación: No tienes que pensar en "la clase" sino en "la instancia de la clase". Es decir, el formulario no es EL formulario, sino que es un "modelo" para instanciarlo y se pueden tener muchas instancias abiertas. Piensa en el Form1 abierto tres veces en pantalla. -- cada una de ellas tiene una copia del control al que quieres acceder. Incluso aunque solo lo abras una vez, el compilador no lo sabe; tienes que indicarle cuál es la instancia del Form1 que quieres usar, no vale con decir "el Form1".

    En resumidas cuentas, si el formulario lo abres así:

    Form1 frm = new Form1(); frm.Show();

    entonces lo que necesitas para acceder al control es esa variable "frm", no "Form1". Para acceder a un control, lo llamarías con frm.NombreDelControl (y no olvides marcarlo como "public" en las propiedades).

    Para acceder desde otra clase, esa clase tiene que tener acceso a la variable "frm". Dependiendo de cómo y dónde instancies esa clase habrá distintas formas de hacerle llegar "frm", por ejemplo, podrías pasársela en el constructor o a través de una propiedad.

    Nótese que esto es genérico para cualquier clase a la que quieras acceder desde otra clase, no tiene nada que ver el hecho de que casualmente "frm" resulte ser un formulario.

    2018年3月3日 20:40
    版主
  • ... la parte contratante de la primera parte será considerada la parte contratante de la primera parte
    2019年9月22日 9:14