2017-09-22 7 views
0

Je suis nouveau à Winforms et essayait juste un exemple d'application ayant 2 formes.
Datagrid ne montre pas les données dans Winforms

  • Form1 est d'avoir textbox, combobox, et un bouton RadioButton soumettre
  • Form2 a une DataGrid qui est censé montrer les données envoyées par Form1.

Form1

DataFetch fetch ; 
 
     
 
     public Form1() 
 
     { 
 
      InitializeComponent(); 
 

 
      fetch = new DataFetch(); 
 
      comboBox1.DataSource = fetch.getDesignation(); 
 
      comboBox1.DisplayMember = "Name"; 
 
      comboBox1.ValueMember = "Id"; 
 

 
      radioButton1.Checked = true; 
 
     } 
 
     
 
     private void button1_Click(object sender, EventArgs e) 
 
     { 
 
      Employee employee = new Employee(); 
 
      employee.Designation = comboBox1.SelectedText==""?"Admin":comboBox1.SelectedText; 
 
      employee.IsCertified = radioButton1.Checked == true ? true : false; 
 
      employee.name = textBox1.Text; 
 
      Form2 form = new Form2(employee); 
 
      form.Show(); 
 
     }

Formulaire2

public partial class Form2 : Form 
 
    { 
 
     public Form2(Employee employee) 
 
     { 
 
      InitializeComponent(); 
 
      dataGridView1.DataSource = employee; 
 
     } 
 
    }

Form2 Designer code

partial class Form2 
 
    { 
 
     /// <summary> 
 
     /// Required designer variable. 
 
     /// </summary> 
 
     private System.ComponentModel.IContainer components = null; 
 

 
     /// <summary> 
 
     /// Clean up any resources being used. 
 
     /// </summary> 
 
     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
 
     protected override void Dispose(bool disposing) 
 
     { 
 
      if (disposing && (components != null)) 
 
      { 
 
       components.Dispose(); 
 
      } 
 
      base.Dispose(disposing); 
 
     } 
 

 
     #region Windows Form Designer generated code 
 

 
     /// <summary> 
 
     /// Required method for Designer support - do not modify 
 
     /// the contents of this method with the code editor. 
 
     /// </summary> 
 
     private void InitializeComponent() 
 
     { 
 
      this.dataGridView1 = new System.Windows.Forms.DataGridView(); 
 
      ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 
 
      this.SuspendLayout(); 
 
      // 
 
      // dataGridView1 
 
      // 
 
      this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
 
      this.dataGridView1.Location = new System.Drawing.Point(72, 93); 
 
      this.dataGridView1.Name = "dataGridView1"; 
 
      this.dataGridView1.Size = new System.Drawing.Size(240, 150); 
 
      this.dataGridView1.TabIndex = 0; 
 
      this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick_1); 
 
      // 
 
      // Form2 
 
      // 
 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
 
      this.ClientSize = new System.Drawing.Size(460, 346); 
 
      this.Controls.Add(this.dataGridView1); 
 
      this.Name = "Form2"; 
 
      this.Text = "Form2"; 
 
      ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); 
 
      this.ResumeLayout(false); 
 

 
     } 
 

 
     #endregion 
 

 
     private System.Windows.Forms.DataGridView dataGridView1; 
 
    }


Bien que je suis en mesure d'obtenir des données dans le constructeur de Form2 mais je ne suis pas capable de se lier à la grille dans ce cas montrer cela à la grille.

+0

Avez-vous défini 'AutoGenerateColumns' pour' dataGridView1' dans le concepteur? Il serait préférable que vous partagiez un concepteur pour 'dataGridView1'. – praty

Répondre

1

DataGridView'sDataSource est généralement une collection et je ne sais pas pourquoi vous essayez de lier un seul objet. Mais de toute façon, vous pouvez initialiser une liste à un élément, puis la lier à la source de données datagridview1.

Par exemple:

datagridview1.DataSource = new List<Employee> { employee }; 
+0

Merci beaucoup. Cela a fonctionné pour moi. :) –

+0

De rien. – SeM

0

vous pouvez fait que facilement

tous les articles de vous voulez ajouter datatable et envoyer le formulaire 2 , puis associez sur gridview

ihtink il vous aidera