<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      在DataGrid中容易使用下拉下文框

      [摘要]在DataGrid中簡單使用下拉列表框作者:Tushar Ameta翻譯:秋楓在DataGrid中使用下拉列表問題。這篇文章講了如何在 System.Windows.Forms.DataGrid中切...
      在DataGrid中簡單使用下拉列表框

      作者:Tushar Ameta

      翻譯:秋楓

      在DataGrid中使用下拉列表問題。這篇文章講了如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件。不過原文不全,無法調試,在這里為了說清楚點,對原文作了一些修改,整篇文章主要包括三方面的內容。

      1. 在DataGrid中加入ComboBox列;

      2. 把在DataGrid中的修改保存到對應的網格;

      3. 設置DataGrid中網格的焦點。



      下面是整個源代碼,一些功能可以看注釋。

      using System;

      using System.Drawing;

      using System.Collections;

      using System.ComponentModel;

      using System.Windows.Forms;

      using System.Data;



      namespace DataGridTest

      {

      public class Form1 : System.Windows.Forms.Form

      {

      private System.Windows.Forms.DataGrid dgdFunctionArea;

      private DataTable dtblFunctionalArea;

      private System.Windows.Forms.Button buttonFocus;

      private System.ComponentModel.Container components = null;



      public Form1()

      {

      InitializeComponent();

      PopulateGrid();

      }



      protected override void Dispose( bool disposing )

      {

      if( disposing )

      {

      if (components != null)

      {

      components.Dispose();

      }

      }

      base.Dispose( disposing );

      }



      #region Windows 窗體設計器生成的代碼

      private void InitializeComponent()

      {

      this.dgdFunctionArea = new System.Windows.Forms.DataGrid();

      this.buttonFocus = new System.Windows.Forms.Button();

      ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).BeginInit();

      this.SuspendLayout();

      //

      // dgdFunctionArea

      //

      this.dgdFunctionArea.DataMember = "";

      this.dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;

      this.dgdFunctionArea.Location = new System.Drawing.Point(4, 8);

      this.dgdFunctionArea.Name = "dgdFunctionArea";

      this.dgdFunctionArea.Size = new System.Drawing.Size(316, 168);

      this.dgdFunctionArea.TabIndex = 0;

      //

      // buttonFocus

      //

      this.buttonFocus.Location = new System.Drawing.Point(232, 188);

      this.buttonFocus.Name = "buttonFocus";

      this.buttonFocus.Size = new System.Drawing.Size(84, 23);

      this.buttonFocus.TabIndex = 1;

      this.buttonFocus.Text = "獲取焦點";

      this.buttonFocus.Click += new System.EventHandler(this.buttonFocus_Click);

      //

      // Form1

      //

      this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

      this.ClientSize = new System.Drawing.Size(332, 217);

      this.Controls.Add(this.buttonFocus);

      this.Controls.Add(this.dgdFunctionArea);

      this.Name = "Form1";

      this.Text = "Form1";

      ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();

      this.ResumeLayout(false);



      }

      #endregion



      /// <summary>

      /// 應用程序的主入口點。

      /// </summary>

      [STAThread]

      static void Main()

      {

      Application.Run(new Form1());

      }

      //初始化DataGrid

      private void PopulateGrid()

      {

      //創建一個DataTable對象,包括四列,前三列為String,最后一列為Boolean。

      dtblFunctionalArea = new DataTable ("FunctionArea");

      string[] arrstrFunctionalArea = new string [3]{"Functional Area","Min","Max"};

      DataColumn dtCol = null;

      //創建String列

      for(int i=0; i< 3;i++)

      {

      dtCol = new DataColumn(arrstrFunctionalArea[i]);

      dtCol.DataType = Type.GetType("System.String");

      dtCol.DefaultValue = "";

      dtblFunctionalArea.Columns.Add(dtCol);

      }



      //創建Boolean列,用CheckedBox來顯示。

      DataColumn dtcCheck = new DataColumn("IsMandatory");

      dtcCheck.DataType = System.Type.GetType("System.Boolean");

      dtcCheck.DefaultValue = false;

      dtblFunctionalArea.Columns.Add(dtcCheck);



      //把表綁定到DataGrid

      dgdFunctionArea.DataSource = dtblFunctionalArea;



      //為DataGrid加載DataGridTableStyle樣式

      if(!dgdFunctionArea.TableStyles.Contains("FunctionArea"))

      {

      DataGridTableStyle dgdtblStyle = new DataGridTableStyle();

      dgdtblStyle.MappingName = dtblFunctionalArea.TableName;

      dgdFunctionArea.TableStyles.Add(dgdtblStyle);

      dgdtblStyle.RowHeadersVisible = false;

      dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;

      dgdtblStyle.AllowSorting = false;

      dgdtblStyle.HeaderBackColor = Color.FromArgb(8,36,107);

      dgdtblStyle.RowHeadersVisible = false;

      dgdtblStyle.HeaderForeColor = Color.White;

      dgdtblStyle.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 9F,

      System.Drawing.FontStyle.Bold,

      System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));

      dgdtblStyle.GridLineColor = Color.DarkGray;

      dgdtblStyle.PreferredRowHeight = 22;

      dgdFunctionArea.BackgroundColor = Color.White;



      //設置列的寬度

      GridColumnStylesCollection colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles;

      colStyle[0].Width = 100;

      colStyle[1].Width = 50;

      colStyle[2].Width = 50;

      colStyle[3].Width = 80;

      }



      DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0];

      ComboBox cmbFunctionArea = new ComboBox();

      cmbFunctionArea.Items.AddRange(new object[]{"選項一","選項二","選項三"});

      cmbFunctionArea.Cursor = Cursors.Arrow;

      cmbFunctionArea.DropDownStyle= ComboBoxStyle.DropDownList;

      cmbFunctionArea.Dock = DockStyle.Fill;

      //在選定項發生更改并且提交了該更改后發生

      cmbFunctionArea.SelectionChangeCommitted += new EventHandler(cmbFunctionArea_SelectionChangeCommitted);

      //把ComboBox添加到DataGridTableStyle的第一列

      dgtb.TextBox.Controls.Add(cmbFunctionArea);



      }

      //設置焦點模擬

      private void GetFocus(int row,int col)

      {

      //先把焦點移動到DataGrid

      this.dgdFunctionArea.Focus();

      //把焦點移動到DataGridCell

      DataGridCell dgc = new DataGridCell(row,col);

      this.dgdFunctionArea.CurrentCell = dgc;

      DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[col];

      //設置焦點

      dgtb.TextBox.Focus();



      }

      //把Combobox上修改的數據提交到當前的網格

      private void cmbFunctionArea_SelectionChangeCommitted(object sender, EventArgs e)

      {

      this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();

      }

      //設置新的焦點

      private void buttonFocus_Click(object sender, System.EventArgs e)

      {

      //焦點模擬,這里設置第三行第一列

      GetFocus(2,0);

      }

      }

      }


      下面是測試界面:





      總結,這里是通過DataGridTextBoxColumn.TextBox.Controls.Add方法實現在列中添加ComboBox控件;對于數據的保存是使用ComboBox.SelectionChangeCommitted事件來完成;設置焦點是通過DataGridTextBoxColumn.TextBox.Focus方法來實現。另外通過這個方法也可以添加DateTimePicker等類似的控件。




      日韩精品一区二区三区高清