none
Utilizar una variable local, en otra parte del programa RRS feed

  • Pregunta

  • Buenos días,

    Estoy utilizando Windows Form para realizar un programa y utilizo una variable local para obtener información de una librería. Quisiera utilizar esa información después en otra parte del programa. Como tendría que hacerlo?, adjunto programa.

           
     private void Open_global_Click(object sender, EventArgs e)
            {
                OpenFileDialog fileSearch = new OpenFileDialog();
    
                fileSearch.Filter = "*.al15_1|*.al15_1";
                fileSearch.RestoreDirectory = true;
                fileSearch.ShowDialog();
                string file_name = fileSearch.FileName.ToString();
                FileInfo Library_info = new FileInfo(file_name);
                try
                {
                    UserGlobalLibrary
    userLib = MyTiaPortal.GlobalLibraries.Open(Library_info, OpenMode.ReadOnly);
                    Estado.Text = "Abriendo la librería global... de la ruta  " + file_name;
                    
                }
                catch (Exception ex)
                {
                    string error = "No se puede abrir la librería razon: " + ex.ToString();
                    System.Windows.Forms.MessageBox.Show(error);
                }
            }
    
            private void Add_device_li_Click(object sender, EventArgs e)
            {
                Device device = MyProject.Devices.CreateFrom(userLib.MasterCopyFolder.MasterCopies.Find("VARIADOR"));
            }


    La variable que quiero utilizar es userLib.

    Gracias de antemano


    martes, 18 de junio de 2019 8:47

Respuestas

  • Hola.

    Podes crearte una clase y usar variables static para que puedas acceder a ella desde cualquier parte del programa.

    public static class MiClase
    {
         public static string MiVariable;
    
    }

    Para utilizar esta variable. 

    MiClase.Mivariable = "Hola";

    Metodos y Variables Globales


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    • Propuesto como respuesta Carlos_Ruiz_M martes, 18 de junio de 2019 14:35
    • Marcado como respuesta Ekhi miércoles, 19 de junio de 2019 8:24
    martes, 18 de junio de 2019 12:30

Todas las respuestas

  • Hola.

    Podes crearte una clase y usar variables static para que puedas acceder a ella desde cualquier parte del programa.

    public static class MiClase
    {
         public static string MiVariable;
    
    }

    Para utilizar esta variable. 

    MiClase.Mivariable = "Hola";

    Metodos y Variables Globales


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    • Propuesto como respuesta Carlos_Ruiz_M martes, 18 de junio de 2019 14:35
    • Marcado como respuesta Ekhi miércoles, 19 de junio de 2019 8:24
    martes, 18 de junio de 2019 12:30
  • Hola Buenos dias

    Me genera alguna curiosidad cuando utilizas términos como variable global o variable Local

    Técnicamente eso no Existe en C#

    Lee este link por favor

    https://docs.microsoft.com/es-MX/dotnet/csharp/programming-guide/classes-and-structs/classes

    En c# los bloques de codigo se separan por las {}

    Según to codigo

    private void Open_global_Click(object sender, EventArgs e)
            {
                OpenFileDialog fileSearch = new OpenFileDialog();
    
                fileSearch.Filter = "*.al15_1|*.al15_1";
                fileSearch.RestoreDirectory = true;
                fileSearch.ShowDialog();
                string file_name = fileSearch.FileName.ToString();
                FileInfo Library_info = new FileInfo(file_name);
                try
                {
                    UserGlobalLibrary
                    userLib = MyTiaPortal.GlobalLibraries.Open(Library_info, OpenMode.ReadOnly);
                    Estado.Text = "Abriendo la librería global... de la ruta  " + file_name;
                    
                }
                catch (Exception ex)
                {
                    string error = "No se puede abrir la librería razon: " + ex.ToString();
                    System.Windows.Forms.MessageBox.Show(error);
                }
            }

    userLib no esta declarada dentro de tu método por eso no tienes acceso a su definición. las declaraciones dentro de un método son variables a nivel de ese método.

    Que es lo que tienes que hacer declara tu variable a nivel de la clase.

    public class MiCLase { private string userLib;

    //Aqui la definicion de tu metodo }


    De esta forma tu método tendrá acceso a la variable.

    Nota: A este nivel no es una variable si no un atributo de la clase. las clases se componen de Propiedades/Atributos y Métodos

    Asi que el temino de variable local o Global en C# no existe


    • Editado niqel jueves, 20 de junio de 2019 16:00 error de escritura
    jueves, 20 de junio de 2019 15:58
  • Gracias
    miércoles, 3 de julio de 2019 6:05