2012-09-15 49 views
1

我想设计一个界面,显示数据网格中的按钮 - 每天24小时。总而言之,我们将展示:24 * 7 = 168个按钮。如何显示2维数据网格

任何想法如何做到这一点?

+0

创建24列(DGVButtons)然后添加7行,或相反。 –

回答

1

我做了一个如何完成它的示例代码! 此代码仅创建按钮,因此请检查: 注意:名称按您自己的方式,我只做了一个示例!

 dataGridView1.AllowUserToAddRows = false; 
     for (int i = 0; i < 24; i++) 
     { 
      DataGridViewButtonColumn btnColumn = new DataGridViewButtonColumn(); 
      btnColumn.HeaderText = string.Format("{0}:00", i+1); 
      btnColumn.Name = "dayColumn"; 
      btnColumn.Width = 40; //set yout width 
      dataGridView1.Columns.Add(btnColumn); 
     } 
     for (int i = 0; i < 7; i++) 
     { 
      dataGridView1.Rows.Add(); 
      dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString(); 
      for (int j = 0; j < dataGridView1.Columns.Count; j++) 
      { 
       dataGridView1[j, i].Value = string.Format("{0}:00", (j + 1)); 
      } 
     } 

-

也许订阅的事件处理程序,当一些按钮被点击是一个好主意:

public Form1() 
    { 
     InitializeComponent(); 
     dataGridView1.AllowUserToAddRows = false; 
     for (int i = 0; i < 24; i++) 
     { 
      DataGridViewButtonColumn btnColumn = new DataGridViewButtonColumn(); 
      btnColumn.HeaderText = string.Format("{0}:00", i+1); 
      btnColumn.Name = "dayColumn"; 
      btnColumn.Width = 40; //set yout width 
      dataGridView1.Columns.Add(btnColumn); 
     } 
     for (int i = 0; i < 7; i++) 
     { 
      dataGridView1.Rows.Add(); 
      dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString(); 
      for (int j = 0; j < dataGridView1.Columns.Count; j++) 
       dataGridView1[j, i].Value = string.Format("{0}:00", (j + 1)); 
     } 
     dataGridView1.CellClick += new DataGridViewCellEventHandler(dataGridView1_CellClick); 
    } 

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 
     string day = dataGridView1.Rows[e.RowIndex].HeaderCell.Value.ToString(); 
     string hour = dataGridView1.Columns[e.ColumnIndex].HeaderText.ToString(); 
     MessageBox.Show("you have clciked on day: " + day + ", hour: " + hour); 
    } 
+0

谢谢你的回答。 – user1606328

1

有一个叫ITypedList一个框架接口,它允许你直接指定以数据绑定理解的方式显示每个组成成员的属性。

认识到试图用这种方式进行绑定是绝对可怕。基本步骤如下:

  • 实现一个集合类型,实现了ITypedList;
  • 对于集合中的每个项目,返回一个PropertyDescriptor,它封装了行/列对的值;
  • 数据绑定到集合正常

我做这个作为一个实验,它的工作原理,但你必须跳通过箍让一切正常工作是一场噩梦。不过,我通常认为它比直接操作视图逻辑好。 DataGridView的目的是要足够聪明,从绑定中推断出它需要做的所有事情,如果我可以修改绑定目标而不是控件,那就是我所喜欢的。