Они могут быть использованными более одного строителя для того же form?

Привет друзья вчера уже спросите, как делает строитель, и он был совсем гениален люди перевернулись и, но сейчас у меня есть другое сомнение и мой вопрос - следующий: Возможно создавать два строителя того же form? Дело в том, что я это пробую нескольких форм и строителя "formulario3", если, что функционирует, но "Изменчивый" строитель, который перемещает изменчивую идентификацию, я не добиваюсь того, чтобы ты функционировал, если удалил строитель formulario3, если, что функционирует строитель Вариабле, но были объединенными не. Где-то здесь я оставляю вам мой код, который должен видеть, что вы видите. Спасибо перед рукой!

Forml

 private void button2_Click(object sender, EventArgs e)
    {



        int contador = 0;

        int ID = int.Parse(InputBox("Escriba la ID del usuario a editar."));

        DataRow EditID;

        for (int i = 0; i <= maxRegistrosO - 1; i++)
        {
            EditID = dataSet2.Tables["Operarias"].Rows[i];

            if ((int)EditID["id"] == ID)
            {
                contador++;

                EditarOperaria formulario3 = new EditarOperaria(this);
                EditarOperaria VaribaleID = new EditarOperaria(i.ToString());
                formulario3.ShowDialog();
                VaribaleID.ShowDialog();
                this.Show();





            }

        }

Form2

 public partial class EditarOperaria : Form
{
    Form2 fomularioAActualizar2;
    public EditarOperaria(Form2 formulario3)
    {
        InitializeComponent();

        fomularioAActualizar2 = formulario3;
    }


    //ID
    private string valorEnForm2;
    public EditarOperaria(string valor)
    {
        InitializeComponent();
        this.valorEnForm2 = valor;
    }

    //conexion a la base de datos
    System.Data.OleDb.OleDbConnection conexion;
    DataSet dataSet5;
    System.Data.OleDb.OleDbDataAdapter dataAdapter5;


    // Cantidad de registros en la tabla.
    private int maxRegistros;
    // posicion del registro.
    private int pos;
    //Mostrar usuario
    private void mostrarRegistro()
    {
        DataRow dRegistro = dataSet5.Tables["Operarias"].Rows[int.Parse(valorEnForm2)];


        textBoxENO.Text = dRegistro[1].ToString();
        textBoxEDNIO.Text = dRegistro[2].ToString();
        //textBoxEFechaNacDO.Text = dRegistro[1].ToString();
        textBoxETelefonoO.Text = dRegistro[4].ToString();
        textBoxETelefono2O.Text = dRegistro[5].ToString();
        textBoxEDireccionO.Text = dRegistro[6].ToString();
        textBoxESSO.Text = dRegistro[7].ToString();
        textBoxECBO.Text = dRegistro[8].ToString();
        //textBoxEFechaAlDO.Text = dRegistro[1].ToString();

    }
private void button1_Click(object sender, EventArgs e)
    {
        fomularioAActualizar2.MostrarTablaOperarias();
    }
0
задан 07.11.2019, 13:46
2 ответа

То, что я наблюдаю, состоит в том, что ты применяешь логику согласно строителю, но не санкционируйте это в момент использования этой информации

Ты определяешь единственный строитель с двумя данными, но не забывай строитель без параметров, так как это необходимо для diseГ±adore, требует Визуальный Studio

немного как это

 public partial class EditarOperaria : Form
{
    private readonly Form2 fomularioAActualizar2 = null;
    private readonly int valorEnForm2 = -1;

    public EditarOperaria()
    {
        InitializeComponent();
    }

    public EditarOperaria(Form2 formulario3, int valor) : this()
    {
        this.valorEnForm2 = valor;
        this.fomularioAActualizar2 = formulario3;
    }


    private void mostrarRegistro()
    {
        if(valorEnForm2 == -1)
            return;

        DataRow dRegistro = dataSet5.Tables["Operarias"].Rows[valorEnForm2];

        //codigo

    }

    private void button1_Click(object sender, EventArgs e)
    {
        if(fomularioAActualizar2 == null)
            return;

        fomularioAActualizar2.MostrarTablaOperarias();
    }

}
0
ответ дан 01.12.2019, 12:27
  • 1
    Привет прежде всего большое спасибо мне кажется Леандро, что он идет совсем из-за хорошей дорожки, но реализовав это они дают мне две ошибки 1-Gravedad Có я говорю Descripció n Я проектирую Я храню в архиве Lí nea Бывший устраненный Устраненное государство Ошибка CS7036 Он не встретился ningú n аргумент, который соответствовал бы pará формальный разыскиваемый метр ' valor' ' EditarOperaria. EditarOperaria (Form2, int). – David Robles 07.11.2019, 19:33
  • 2
    В формуляре 1 habrí во что менять что-то? я иду немного потеряно это чувствую empeze 3 дня назад с визуальным – David Robles 07.11.2019, 19:34
  • 3
    помни, что в примере я определил параметр, как int, может быть, эта стоимость, которую ты перемещаешь с form1, ты был должен castearlo в int, если он состоит в том, что ты это берешь как string – Leandro Tuttini 07.11.2019, 20:14

Если могут иметься 2 строителя в классе.

Проблема здесь другая. Твои два строителя делают 2 вещи полностью различными.

строителя зовут, когда вы "строите" объект, это - это, сделав new твоего объекта.

Тогда, поскольку твои строители делают отличные вещи, звонить другому не будет называть одного, и самое вероятное состоит в том, чтобы у тебя были ошибки, потому что в одном из случаев будет оставаться пустая переменная, и в другом, другой отличной пустой переменной.

0
ответ дан 01.12.2019, 12:27