Mac版的QQ表情要怎么添加呢?怎么添加Mac版QQ表情呢?其实方法和Windows版本的QQ是一样的,直接在网络上下载你需要的表情包,然后安装到QQ for mac当中就可以了。
本文将介绍如何在 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/// /// 应用程序的主入口点。/// [STAThread]static void Main() {Application.Run(new Form1());}//初始化DataGridprivate 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);
//把表绑定到DataGriddgdFunctionArea.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){//先把焦点移动到DataGridthis.dgdFunctionArea.Focus(); //把焦点移动到DataGridCellDataGridCell 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等类似的控件。