Стоимость array string не переходит с другим из одного form

Я пробовал перемещать стоимость одного array string другой array string в секунде form. То, что он перемещает, состоит, в том, что во время скроллирования программы, стоимость string не появляется во втором form, только появляется... совсем не и уже не, к которому больше относиться.

Adicionalmente, есть array объектов (Кхугадор Хугадор), которые я не могу использовать во втором form, из-за Вашего уровня доступа. Но это, попробовав помещать публично, он говорит, что превосходит уровень доступа form 2. Я не понимаю на самом деле, что то, что он перемещает. Уже мы пробуем всего с моей парой и невозможно способствовать тому, чтобы у labels в form 3 был текст array string в form, 2

namespace Gambit
{
    public partial class Form2 : Form
    {
        //Atributos (Se crea el array para los nombres)
        public string[] listaJugadores = new string[6];

        Label[] listaLabels = new Label[6];

        CJugador[] jugador = new CJugador[4];

        public string[] listaFinalJugadores = new string[6];

        public int contador = 0;

        public Form2()
        {
            InitializeComponent();
            listaLabels[0] = this.label1;
            listaLabels[1] = this.label2;
            listaLabels[2] = this.label3;
            listaLabels[3] = this.label4;
            listaLabels[4] = this.label5;
            listaLabels[5] = this.label6;
        }

        //Se activa el boton para mostrar los nombres registrados
        private void button1_Click(object sender, EventArgs e)
        {

            //Esto hara que se agureguen los nombres a la lista de jugadores

            jugador[contador] = new CJugador();
            jugador[contador].nombre = txtNombres.Text;

            listaJugadores[contador]= txtNombres.Text;

            listaLabels[contador].Text= txtNombres.Text;

            if (contador <= 4)
            {
                contador++;
            }
            else
            {
                contador = 0;
            }

            Random rnd = new Random();
            int value = rnd.Next(0, 10);


            textBox1.Text = value.ToString();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (contador == 4)
            {

                //Esto va a crear un orden aleatorio en el array que se creo con anterioridad
                Random rnd = new Random();
                string[] jugadoresRandom4 = listaJugadores.OrderBy(x => rnd.Next()).ToArray();

                jugadoresRandom4.CopyTo(listaFinalJugadores, 0);


                //Abriremos el forms que nos servira para jugar con 4 personas
                Form3 TableroPara2 = new Form3();
                this.Hide();
                TableroPara2.Show();
            }

            else if (contador == 5)
            {
                //Esto va a crear un orden aleatorio en el array que se creo con anterioridad
                Random rnd = new Random();
                string[] jugadoresRandom6 = listaJugadores.OrderBy(x => rnd.Next()).ToArray();


                //Abriremos el forms que nos servira para jugar con 6 personas
                Form4 TableroPara6 = new Form4();
                this.Visible = false;
                TableroPara6.Show();
            }
            else
            {
                label1.Text = " ";
                label2.Text = " ";
                label3.Text = " ";
                label4.Text = " ";
                label5.Text = " ";
                label6.Text = " ";

                string mensaje = "Tienes que ingresar 4 o 6 jugadores. Intentalo de nuevo.";
                MessageBox.Show(mensaje);

                contador=0;
            }

        }
    }
}



            //Creamos un array de objetos que tendran nuestras propiedades
            CJugador[] jugador = new CJugador[4];

            //Creamos  un ciclo for para crear jugadores en su respectivo array con los atributos "nombre" ranzomizados.
            for (int i = 0; i < 4; i++)
            {
                jugador[i] = new CJugador();
                jugador[i].nombre = arrayJugadores[i];
            }

            label1.Text = FormRegistro.listaFinalJugadores[0];
            label2.Text = jugador[1].nombre;
            label3.Text = jugador[2].nombre;
            label4.Text = jugador[3].nombre;
        }
        private void button1_Click(object sender, EventArgs e)
        {

            Form2 FormRegistro = new Form2();


            Random rnd = new Random();
            int value = rnd.Next(0, 10);

            if (Enumerable.Range(0,15).Contains(value))
            {

            }


        }
    }
}
0
задан 10.11.2019, 04:13
1 ответ

Уже мы пробуем всего с моей парой и невозможно способствовать тому, чтобы у labels в form 3 был текст array string в form 2

, Чтобы этого добиваться, строитель Form3 должен быть parametrizado, а именно, нуждается в том, чтобы иметь один parГЎmetro типа Label[] где recibirГЎ ссылку объекта.

ImagГ-nate, что наш Form2 estГЎ построенный, таким образом:

class Form2 : Form
{
    Label[] listaLabels = new Label[6];
    public Form2()
    {
    }
    private void button2_Click(object sender, EventArgs e)
    {
        //Pasamos la referencia que tenga guardada listaLabels al parámetro del constructor.
        Form3 form3 = new Form3(listaLabels);
    }
}

Потом, наш Form3 deberГ, - чтобы быть расположенным в порядке таким образом:

class Form3 : Form
{
    Label[] listaLabels;
    public Form3(Label[] p_listaLabels)
    {
        //Le pasamos la referencia que tenga guardada p_listaLabels a listaLabels
        listaLabels = p_listaLabels;
    }
}

Есть другой способ это делать, но deberГЎs объявлять признак listaLabels как estГЎtico в Form2 и чтобы мочь использовать это в другом формуляре, deberГЎs создавать один getter, чтобы иметь доступ к признаку.

Например:

class Form2 : Form
{
    private static Label[] listaLabels = new Label[6];

    public static Label[] ListaLabels
    {
        get
        {
            return listaLabels;
        }
    }

    public Form2()
    {
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form3 form3 = new Form3();
    }
}

Сейчас, способ использовать getter (его один mГ©todo, что стоит нам для того, чтобы иметь доступ к признаку, лишенному класса) в Form3 serГ - в таким образом:

class Form3 : Form
{
    public Form3()
    {
        //Dará como resultado el primer label que tenga guardado el arreglo de objeto
        MessageBox.Show(Form2.ListaLabels[0].Text);
    }
}

Из этой формы не necesitarГ-хозяева создавать строитель parametrizado.

1
ответ дан 01.12.2019, 12:10
  • 1
    Попробуйте метод getter. Жалостно, когда он вышел одиноким " Label1". Редкое - что, во время 2 перемещает стоимость textbox в form label там сам, если он появляется, но потом уже не:/ – Juan 10.11.2019, 06:28
  • 2
    @Juan я не понимаю, который является проблемой. Deberí схвати обновления твоего вопроса и показывания где está возможная ошибка. – MrDave1999 10.11.2019, 15:41
  • 3
    @Juan то, что он перемещает тебя, состоит, в том, что открыв твой form, ты это видишь, и после изменив что-то, уже ты не видишь это изменение в другом form? – gbianchi♦ 11.11.2019, 02:39