【发布时间】:2013-11-29 17:13:48
【问题描述】:
在表单上,我放置了没有标签页的 Tabcontrol,并声明了变量 DataGridview 和 TabPage
private DataGridView[] rtb = new DataGridView[100];
private TabPage[] tab = new TabPage[100];
之后我创建了一个名为 User Create TabPages 的函数并 带有基于文本框输入的列的 Gridview 有多少用户想要
public void ctp(Int32 textbox)
{
try
{
if (textbox > 10)
{
MessageBox.Show("You Exceed Limit");
}
else
{
int k = 0;
int s = 0;
tabControl2.TabPages.Clear();
k = Convert.ToInt32(textBox1.Text);
for (int i = 0; i < k; i++)
{
tab[i] = new TabPage();
//Start Gridview
rtb[i] = new System.Windows.Forms.DataGridView();
rtb[i].Location = new System.Drawing.Point(0, 50);
rtb[i].Size = new System.Drawing.Size(1020, 150);
//ID Column
rtb[i].Columns.Add("tr_id", "ID");
rtb[i].Columns["tr_id"].ReadOnly = true;
rtb[i].Columns["tr_id"].Width = 1;
// Color Column
rtb[i].Columns.Add("color_no", "Pantone No.");
//Quantity Column
rtb[i].Columns.Add("quantity", "Quantity");
//Piece Weight Column
rtb[i].Columns.Add("piece_weight", "Piece Weight");
//Total Weight Carton
rtb[i].Columns.Add("total_weight", "Total Weight");
//Piece in Carton Column
rtb[i].Columns.Add("pcs_carton", "Pcs/Carton");
//No Of Carton Column
rtb[i].Columns.Add("no_of_carton", "Total Cartons");
//Unit Name Column
rtb[i].Columns.Add("unit_name", "Unit Name");
//Rate Column
rtb[i].Columns.Add("rate", "Rate");
//Amount Column
rtb[i].Columns.Add("amount", "Amount");
//Ship Qty Column
rtb[i].Columns.Add("ship_qty", "Ship Qty.");
//kdnr column
rtb[i].Columns.Add("kdnr", "KDNR");
//reference No Column
rtb[i].Columns.Add("ref_no", "Reference No.");
DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.Name = "deleterow";
checkColumn.HeaderText = "Delete Row";
checkColumn.Width = 50;
checkColumn.ReadOnly = false;
checkColumn.FillWeight = 10; //if the datagridview is resized (on form resize) the checkbox won't take up too much; value is relative to the other columns' fill values
rtb[i].Columns.Add(checkColumn);
tab[i].Controls.Add(rtb[i]);
tab[i].Location = new System.Drawing.Point(4, 22);
tab[i].Name = "tab" + i.ToString();
tab[i].Padding = new System.Windows.Forms.Padding(3);
tab[i].Size = new System.Drawing.Size(400, 242);
tab[i].Text = "Article" + i.ToString();
tab[i].UseVisualStyleBackColor = true;
tabControl2.TabPages.Add(tab[i]);
//MessageBox.Show(""+tab[i].Text);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
在此函数调用 TextBox KeyDown 事件之后
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
#region Calling Create TabPage Function
try
{
if (e.KeyCode == Keys.Enter)
{
Int32 textbox = Convert.ToInt32(textBox1.Text);
ctp(textbox);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
#endregion
}
此代码完美运行我的问题是,当我有 2 个 gridview 这将由用户动态创建,因此如何访问gridview KeyDown、EditControlShowing 等事件。
【问题讨论】:
-
你想要所有gridview的keydown吗?然后为所有gridview编写自己的事件和addhandler
-
我在自定义事件创建中尝试但不能完美地为创建和调用此代码的 gridview keydown 和 editcontrol 提供示例
-
只告诉我如何调用/eventhandler 以及我在哪里调用表单上的自定义创建 gridview 事件
-
好的。所有gridview按键事件都做相同的操作或不同的操作
-
@SATSON 抱歉回复晚了,我要去吃午饭,所有 gridview 操作都一样
标签: c# winforms datagridview tabcontrol tabpage