Operaciones de paso de valores entre formularios en C# (pasar valores y obtener valores de retorno)

  En el desarrollo de aplicaciones C#, las operaciones de transferencia de valor entre formularios son operaciones inevitables y frecuentes.
  Por ejemplo, ¿cuáles son los métodos comunes para llamar a otro formulario en un formulario, pasar un valor y obtener el valor de retorno?
  Generalmente, esto se logra a través de variables públicas del proyecto, variables públicas del formulario (campos más propiedades de acceso), constructores de formularios, delegados y eventos, etc. A continuación se dan ejemplos.
  1. A través de variables públicas
  En el desarrollo inicial se pueden hacer muchas cosas a través de variables públicas, parece haber sido probado y cierto, y también es un pensamiento habitual, siempre que se puedan evitar efectivamente los conflictos de acceso.

  Definir clases de acceso público:

    internal class GlobalVar
    {
        private static string _StrPsp = "";// 私有静态字段
        public static string StrPsp // 公有静态属性
        {
            get { return _StrPsp; }
            set { _StrPsp = value; }
        }
    }

  Cambie su valor en form2:

            GlobalVar.StrPsp = "这是改变后的值";
            DialogResult = DialogResult.OK;
            Close();

  Llame al formulario form2 y obtenga el valor de retorno:

            //可以处理GlobalVar.StrPsp
            //......
            Form2 form = new Form2();
            DialogResult FrmSelect = form.ShowDialog();
            if (FrmSelect == DialogResult.OK)
            {
                // 获取返回值
                MessageBox.Show( GlobalVar.StrPsp);
                // 处理返回值
            }
            else
            {
                //不取值
                MessageBox.Show("没有改变值");
            }

  No es necesario utilizar el método ShowDialog, esto es sólo para centrar el acceso y evitar conflictos de acceso.

  2. Usando el método ShowDialog
  Use el método ShowDialog para abrir un formulario y configurarlo como un cuadro de diálogo modal. Después de esperar a que se cierre el formulario, puede obtener el valor de retorno accediendo a sus propiedades o métodos públicos.
  La diferencia entre este y el anterior es que el anterior accede a las variables públicas de todo el proyecto, mientras que este método accede a las variables públicas del formulario. Aquí, el formulario se abre y se le asigna un valor, y el valor de retorno se obtiene una vez completado el acceso, todo esto se logra accediendo a las variables públicas del formulario.
  Por ejemplo:

  Defina variables de acceso en el formulario form3:

public string StrReturn { get; private set; }

  Cambie el valor de retorno cuando necesite devolver un resultado:

            StrReturn = "这是改变后的返回值";
            DialogResult = DialogResult.OK;
            Close();

  transferir:

            Form3 form = new Form3();
            MessageBox.Show(form.ReturnValue,"改变前的值");
            DialogResult result = form.ShowDialog();
            if (result == DialogResult.OK)
            {
                // 获取返回值
                MessageBox.Show(form.StrReturn);
            }

  Si hay muchas variables complejas a las que es necesario acceder, esto se puede lograr definiendo una clase, por ejemplo:

        public static class NetInfo
        {
            private static string _IpAddress;

            public static string IpAddress
            {
                get { return _IpAddress; }
                set { _IpAddress = value; }
            }
        }

  Devolución del formulario 3:

            NetInfo.IpAddress = "1.2.3.4";
            DialogResult = DialogResult.OK;
            Close();

  Extraiga el valor de retorno:

            Form3 form = new Form3();
            MessageBox.Show(Form3.NetInfo.IpAddress,"改变前的值");
            DialogResult result = form.ShowDialog();
            if (result == DialogResult.OK)
            {
                // 获取返回值
                string value = Form3.NetInfo.IpAddress;
                MessageBox.Show(value);
            }

  Los dos métodos anteriores realizan la transferencia de valor y obtienen el valor de retorno a través de las variables públicas del proyecto y las variables públicas del formulario, que son simples, prácticas, rápidas y convenientes.

  En muchas herramientas de desarrollo de aplicaciones, hay un objeto público pasado de forma predeterminada, que equivale a un pasador intermedio y desempeña el papel de una estación de transferencia de datos.

  3. Pasar eventos

  Los parámetros se pasan a través del constructor del formulario y los valores de retorno se obtienen mediante devoluciones de llamada de eventos.

  Definir clases de acceso público:

    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }

  Defínalo en el formulario form4 al que se debe acceder:

        public event EventHandler<Student> ReturnValueEvent;//回调事件
        private Student MyStudent;

  Constructor de forma4:

        public Form4(Student student)
        {
            InitializeComponent();
            MyStudent = student;
        }

  valor de retorno:

            MyStudent.Id = 2;
            MyStudent.Name = "Java";
            MyStudent.Age = 3;
            //MessageBox.Show(MyStudent.Name);
            // 触发事件,传递返回值
            ReturnValueEvent?.Invoke(this, MyStudent);
            Close();

  Llame al formulario form4, pase el valor y obtenga el valor de retorno:

            Student student = new Student();
            student.Name = "C#";
            student.Id = 1;
            student.Age = 2;
            Form4 targetForm = new Form4(student);
            targetForm.ReturnValueEvent += targetForm_ReturnValueEvent;//订阅事件
            targetForm.ShowDialog();

  Manejo de eventos:

        private void targetForm_ReturnValueEvent(object sender, Student student)
        {
            // 处理返回值
            MessageBox.Show(student.Name);
        }

  4. Por delegación

  La persona que llama está preparada para definir una clase de acceso:

    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }

  Método de procesamiento de declaraciones:

        private void Form_ReturnValueCallback(Student MyStudent)
        {
            // 处理返回值
            MessageBox.Show(MyStudent.Name);
        }

  Formulario de llamada4:

            Form4 frm4= new Form4();
            frm4.ReturnValueCallback = Form_ReturnValueCallback;
            frm4.Show();

  Defina un delegado en el formulario llamado:

public Action<Student> ReturnValueCallback { get; set; }

  valor de retorno:

            Student student1 = new Student();
            student1.Id = 2;
            student1.Name = "C#";
            student1.Age = 3;
            // 调用委托,传递返回值
            ReturnValueCallback?.Invoke(student1);
            Close();

  Lo anterior resume las cuatro operaciones comunes para transferir valores entre formularios, que se pueden seleccionar de acuerdo con la situación real durante el desarrollo del proyecto.
 

Supongo que te gusta

Origin blog.csdn.net/dawn0718/article/details/131954729
Recomendado
Clasificación