2011-08-14 20 views
5

tôi cũng có một datagridview, và tôi có một cột, tất cả tôi muốn làm là kiểm soát các tế bào trong cột này, đôi khi làm cho nó combobox, đôi khi textBox .... vvDataGridview ô của một cột không thể có loại khác nhau

Tôi có thể làm cho các ô của cột chỉ có một loại, tôi có thể tạo nhiều ô trong một cột không?

hy vọng điều đó là rõ ràng.

Trả lời

7

Có hai cách để làm điều này:

  1. Cast một DataGridViewCell đến một loại tế bào nào đó mà tồn tại. Ví dụ, chuyển đổi một DataGridViewTextBoxCell thành kiểu DataGridViewComboBoxCell.
  2. Tạo điều khiển và thêm nó vào bộ sưu tập điều khiển của DataGridView, đặt vị trí và kích thước của nó để phù hợp với ô được lưu trữ.

Xem mã mẫu của tôi bên dưới minh họa các thủ thuật.

private void Form5_Load(object sender, EventArgs e) 
     { 
      DataTable dt = new DataTable(); 
      dt.Columns.Add("name"); 
      for (int j = 0; j < 10; j++) 
      { 
       dt.Rows.Add(""); 
      } 
      this.dataGridView1.DataSource = dt; 
      this.dataGridView1.Columns[0].Width = 200; 

      /* 
      * First method : Convert to an existed cell type such ComboBox cell,etc 
      */ 

      DataGridViewComboBoxCell ComboBoxCell = new DataGridViewComboBoxCell(); 
      ComboBoxCell.Items.AddRange(new string[] { "aaa","bbb","ccc" }); 
      this.dataGridView1[0, 0] = ComboBoxCell; 
      this.dataGridView1[0, 0].Value = "bbb"; 

      DataGridViewTextBoxCell TextBoxCell = new DataGridViewTextBoxCell(); 
      this.dataGridView1[0, 1] = TextBoxCell; 
      this.dataGridView1[0, 1].Value = "some text"; 

      DataGridViewCheckBoxCell CheckBoxCell = new DataGridViewCheckBoxCell(); 
      CheckBoxCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; 
      this.dataGridView1[0, 2] = CheckBoxCell; 
      this.dataGridView1[0, 2].Value = true; 

      /* 
      * Second method : Add control to the host in the cell 
      */ 
      DateTimePicker dtp = new DateTimePicker(); 
      dtp.Value = DateTime.Now.AddDays(-10); 
      //add DateTimePicker into the control collection of the DataGridView 
      this.dataGridView1.Controls.Add(dtp); 
      //set its location and size to fit the cell 
      dtp.Location = this.dataGridView1.GetCellDisplayRectangle(0, 3,true).Location; 
      dtp.Size = this.dataGridView1.GetCellDisplayRectangle(0, 3,true).Size; 
     } 

Taken từ here

Các vấn đề liên quan