用datagrid的templatecolumn
到着里去看一看有没有你需要的答案!
http://xml.sz.luohuedu.net/xml/Content.asp

解决方案 »

  1.   

    看看MSND关于TableStyle属性和GridColumnStyles属性的介绍,参考以下代码private void AddCustomDataTableStyle()
       {
          DataGridTableStyle ts1 = new DataGridTableStyle();
          ts1.MappingName = "Customers";
          // Set other properties.
          ts1.AlternatingBackColor = Color.LightGray;      /* Add a GridColumnStyle and set its MappingName 
          to the name of a DataColumn in the DataTable. 
          Set the HeaderText and Width properties. */
          
          DataGridColumnStyle boolCol = new DataGridBoolColumn();
          boolCol.MappingName = "Current";
          boolCol.HeaderText = "IsCurrent Customer";
          boolCol.Width = 150;
          ts1.GridColumnStyles.Add(boolCol);
          
          // Add a second column style.
          DataGridColumnStyle TextCol = new DataGridTextBoxColumn();
          TextCol.MappingName = "custName";
          TextCol.HeaderText = "Customer Name";
          TextCol.Width = 250;
          ts1.GridColumnStyles.Add(TextCol);      // Create the second table style with columns.
          DataGridTableStyle ts2 = new DataGridTableStyle();
          ts2.MappingName = "Orders";      // Set other properties.
          ts2.AlternatingBackColor = Color.LightBlue;
          
          // Create new ColumnStyle objects
          DataGridColumnStyle cOrderDate = 
          new DataGridTextBoxColumn();
          cOrderDate.MappingName = "OrderDate";
          cOrderDate.HeaderText = "Order Date";
          cOrderDate.Width = 100;
          ts2.GridColumnStyles.Add(cOrderDate);      /* Use a PropertyDescriptor to create a formatted
          column. First get the PropertyDescriptorCollection
          for the data source and data member. */
          PropertyDescriptorCollection pcol = this.BindingContext
          [myDataSet, "Customers.custToOrders"].GetItemProperties();
     
          /* Create a formatted column using a PropertyDescriptor.
          The formatting character "c" specifies a currency format. */     
          DataGridColumnStyle csOrderAmount = 
          new DataGridTextBoxColumn(pcol["OrderAmount"], "c", true);
          csOrderAmount.MappingName = "OrderAmount";
          csOrderAmount.HeaderText = "Total";
          csOrderAmount.Width = 100;
          ts2.GridColumnStyles.Add(csOrderAmount);      /* Add the DataGridTableStyle instances to 
          the GridTableStylesCollection. */
          myDataGrid.TableStyles.Add(ts1);
          myDataGrid.TableStyles.Add(ts2);     // Sets the TablesAlreadyAdded to true so this doesn't happen again.
         TablesAlreadyAdded=true;
       }
    =====来自MSDN2003希望能对你有所帮助~~~
      

  2.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwinforms/html/wnf_custdatagrid.asp
      

  3.   

    下面是一个非常简单的例子,实现了DataGridCell得到焦点时,显示一个Label和一个CheckBox,当然你可以添加你想要一个或者多个其他控件
    --------------------------------------------------------------
    public class DataGridCustomeColumn : DataGridTextBoxColumn
    {
    public Label label;
    public CheckBox checkBox;
    public DataGridCustomeColumn():base()
    {
    label = new Label();
    checkBox = new CheckBox();
    }
    protected override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
    {
    base.Edit(source,rowNum, bounds, readOnly, instantText , cellIsVisible);
    label.Parent = this.TextBox.Parent;
    label.Location = this.TextBox.Location;
    label.Size = new Size(this.TextBox.Size.Width-15, this.TextBox.Size.Height);
    label.Text =  this.TextBox.Text;
    checkBox.Parent = this.TextBox.Parent;
    checkBox.Location = new Point(this.TextBox.Location.X+label.Size.Width,this.TextBox.Location.Y);
    checkBox.Size = new Size(15,this.TextBox.Height);
    this.TextBox.Visible = false;
    label.BringToFront();
    checkBox.BringToFront();
    }
    }