podía transferir los valores a poner ahora el problema está en el interruptor de los casos me hacen cambiar para ser capaz de transferir datos a varios forma de poner sólo el formulario abierto puesto que no puedo hacer que el conmutador se pasa a casos de incumplimiento en la ejecución de lo que el problema está en (FORMID) ¿cómo utilizar el interruptor de casos Correctamente aquí
este es mi código de form1

public partial class Form1 : Form
{
    Form2 f2 = new Form2();
    public Form1()
    {
        InitializeComponent();
        f2.setParent(this);
        f2.MdiParent = this.MdiParent;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        f2.Show();
        f2.Activate();
    }
}

}

y de esta forma 2 código :

public partial class Form2 : Form
{
public int FORMID = 0;
private Form1 f1;
private Form3 f3;
DataTable dt;
public Form2()
{
InitializeComponent();
}
void load_table()
{
string constring = "Data Source =.; initial Catalog = business; Integrated Security=SSPI;";
SqlConnection CN = new SqlConnection(constring);
SqlCommand cmd = new SqlCommand("select * from T_AKARAT_BUILDING_TP", CN);
try
{
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
dt = new DataTable();
sda.Fill(dt);
BindingSource bsource = new BindingSource();
bsource.DataSource = dt;
dataGridView1.DataSource = bsource;
sda.Update(dt);
}
catch { }
}
private void Form2_Load(object sender, EventArgs e)
{
load_table();
}
public void setParent(Form1 parentValue)
{
f1 = parentValue;
}
public void setParent(Form3 parentValue)
{
f3 = parentValue;
}
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{
switch (FORMID)
{
case 1:
f1.textBox1.Text = dt.Rows[dataGridView1.CurrentCell.RowIndex][0].ToString();
f1.textBox2.Text = dt.Rows[dataGridView1.CurrentCell.RowIndex][1].ToString();
this.Hide();
break;
case 2:
f3.textBox1.Text = dt.Rows[dataGridView1.CurrentCell.RowIndex][0].ToString();
f3.textBox2.Text = dt.Rows[dataGridView1.CurrentCell.RowIndex][1].ToString();
this.Hide();
break;
default:
MessageBox.Show("plz select");
break;
}
this.Hide();
}
}

}

I conjunto de cuadros de texto modificadores public en el formulario 2, pero este código no funciona & no sé qué es lo que falta o mal aquí espero que me ayude a

la esperanza de que algún corregir mi código no dar ejemplos por favor

  • usted puede colocar una tabla de datos como un argumento en form2 constructor,a continuación, en form1 se llame pasar el datatable.
  • incluso con una variable de form2 en el form1, no se puede establecer el texto de los cuadros de texto debido a que sus modificadores de acceso se establece en privado,sólo si se cambia al público,que puede no ser la mejor opción.
InformationsquelleAutor user2536447 | 2013-06-30

6 Comentarios

  1. 0

    otra forma es que, definir dos variable pública en el form2 y este valor en form1 conjunto de las variables, a continuación, en el form2 Evento Enter conjunto de las variables a cuadros de texto

    • aref mohammadi,podría usted por favor, un ejemplo
    • pongo mi código completo , yo podría transferir los valores a poner ahora el problema está en el interruptor de los casos me hacen cambiar para ser capaz de transferir datos a varios forma de poner sólo el formulario abierto puesto que no puedo hacer que el conmutador se pasa a casos de incumplimiento en la ejecución de lo que el problema está en (FORMID) ¿cómo utilizar el interruptor de casos Correctamente aquí
  2. 0

    La asignación de valor a los cuadros de texto que deben trabajar de la manera que usted tiene. Sin embargo, el código no está llamando ZDP.Mostrar.

    También el cierre de su form1, por lo tanto, usted probablemente tendrá que declarar una nueva form1 para establecer el padre

    • la esperanza de que algún corregir mi código no dar ejemplos por favor
    • cuando usted consigue su doble clic en caso de que usted no está recibiendo ningún tipo específico de fila,celda….sus reaccionar a hacer doble clic en el control datagrid.con, por ejemplo, RowHeaderMouseClick haga clic en el encabezado y conseguir que el índice de fila,más fáciles de filtrar los datos.
  3. 0

    probarlo en cellmousedoubleclick evento,los nombres que puse son solo a modo de ejemplo, puede cambiar a su propio:

    private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
    {
    Form2 f2 = new Form2();
    f2.textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
    f2.Show();
    }

    esto va a hacer si los modificadores de acceso de la caja de texto son públicos.

    Este 2 ejemplos hará el 2 cuadros de texto de texto a,1º ejemplo – los valores de la columna -,2º ejemplo – los valores de fila.

            private void dataGridView1_ColumnHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
    {
    Form2 f2 = new Form2();
    f2.textBox1.Text = dataGridView1.Rows[0].Cells[e.ColumnIndex].FormattedValue.ToString();
    f2.textBox2.Text = dataGridView1.Rows[1].Cells[e.ColumnIndex].FormattedValue.ToString();
    f2.Show();
    }
    private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
    Form2 f2 = new Form2();
    f2.textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].FormattedValue.ToString();
    f2.textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[1].FormattedValue.ToString();
    f2.Show();
    }
  4. 0

    Tal vez como esta .. ZDP debe declaró por primera vez como Forma de clase

    public void setParent()
    {
    FDAS = form2;
    }
    • pongo mi código completo , yo podría transferir los valores a poner ahora el problema está en el interruptor de los casos me hacen cambiar para ser capaz de transferir datos a varios forma de poner sólo el formulario abierto puesto que no puedo hacer que el conmutador se pasa a casos de incumplimiento en la ejecución de lo que el problema está en (FORMID) ¿cómo utilizar el interruptor de casos Correctamente aquí
  5. 0

    Desafortunadamente, usted no dijo que la línea de código que está causando la «referencia a objeto no establecida» la excepción. Y, ya que no podemos ver todo el código, tenemos que adivinar dónde podría ser el problema.

    Cuando se crea la instancia de Form2, usted tiene que establecer la propiedad MdiParent. Y, sin embargo, que usen la propiedad MdiParent en su Form2 constructor (y esto no es correcto):

    public form2()
    {
    InitializeComponent();
    //neither one of the following lines make any sense, get rid of them
    //form1.setParent(this);
    //form1.MdiParent = this.MdiParent; 
    }

    No mostrar el código que se está instanciando en Form1, Form2, pero se debe hacer de la siguiente manera:

    //somewhere in Form1
    Form2 FDAS = new Form2();
    FDAS.MdiParent = this;

    También, porque form1 es un MdiParent, creo que también dispondrá de errores al .Close (), así que no estoy seguro de por qué estás haciendo eso!

    • Bonnie DeWitt, cuando pongo el código de form1 tengo error de ZDP es lejos, pero se usa como atype
    • Podría usted nos muestran dónde error que se está produciendo? Porque el código que mostré no se le debe dar ese error, por lo que debe ser la izquierda encima de algunos de su código original, quizás algunos que no hemos visto aún aquí.
    • Bonnie , pongo mi código completo , yo podría transferir los valores a poner ahora el problema está en el interruptor de los casos me hacen cambiar para ser capaz de transferir datos a varios forma de poner sólo el formulario abierto puesto que no puedo hacer que el conmutador se pasa a casos de incumplimiento en la ejecución de lo que el problema está en (FORMID) ¿cómo utilizar el interruptor de casos Correctamente aquí
    • Wow, las cosas se complican cuando el post original se totalmente modificado. De todos modos, me parece que no estás configuración FORMID en cualquier lugar, por lo que permanece como 0 (de ahí la razón por la que el interruptor va al caso de impago).
    • esto la verdad me puso punto de interrupción en el código y FORMID valor no cambia, pero no sé cómo establecer FORMID en otras formas de hacer que funcione en el caso del switch
    • No sé … tal vez en el setParent() método?

  6. 0

    Para ello puede utilizar la clase
    crear un class1.cs
    código en la clase por ejemplo :

    class Class1
    {
    public string firstName;
    public string lastName;
    public Class1 FirstName(string firstname)
    {
    this.firstName = firstname;
    return this;
    }
    public Class1 LastName(string lastname)
    {
    this.lastName = lastname;
    return this;
    }
    }

    código de form1 :

    Class1 c = new Class1();
    private void button1_Click(object sender, EventArgs e)
    {
    c.firstName = dataGridView1.CurrentRow.Cells[1].Value.ToString();
    c.lastName = dataGridView1.CurrentRow.Cells[2].Value.ToString();
    }

    Ahora usted puede utilizar este código para todos los programas

    Ejemplo en otra forma:

    label1.text = c.firstName;
    label2.text = c.lastName;

    Buena Suerte

Dejar respuesta

Please enter your comment!
Please enter your name here