刚接触C#,现在需要做一个新窗体要求如下:1.在原有的窗体上添加一个button控件,点击按钮后会自动跳转到新窗体
2.原有窗体中有一个dataviewer1控件显示数据库的查询结果,现在需要在点击控件后将原有窗体的dataviewer1控件的数据源复制到新窗体的dataviewercopy中现在我在程序中新建了新窗体,在原有窗体中写了新窗体的跳转代码,但是运行时点击按钮没反应
另关于数据源的复制数据源的问题该怎么处理(需要复制的只是鼠标选中的哪一行的数据)望各位大大帮帮忙,最好是有具体的代码(给分会高点)
我的窗体跳转代码如下:
private void toolStripButton6_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count == 0)
{
MessageBox.Show("請查詢后再複製!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
this.Cursor = Cursors.WaitCursor;
DataTable dt = (DataTable)dataGridView1.DataSource;
Dpartcost dpt = new Dpartcost();
partcostcopyfrm pcp = new partcostcopyfrm();
pcp.Show();
if (dt != null) dt.Dispose();
pcp.Dispose();
this.Cursor = Cursors.Default;
}
2.原有窗体中有一个dataviewer1控件显示数据库的查询结果,现在需要在点击控件后将原有窗体的dataviewer1控件的数据源复制到新窗体的dataviewercopy中现在我在程序中新建了新窗体,在原有窗体中写了新窗体的跳转代码,但是运行时点击按钮没反应
另关于数据源的复制数据源的问题该怎么处理(需要复制的只是鼠标选中的哪一行的数据)望各位大大帮帮忙,最好是有具体的代码(给分会高点)
我的窗体跳转代码如下:
private void toolStripButton6_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count == 0)
{
MessageBox.Show("請查詢后再複製!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
this.Cursor = Cursors.WaitCursor;
DataTable dt = (DataTable)dataGridView1.DataSource;
Dpartcost dpt = new Dpartcost();
partcostcopyfrm pcp = new partcostcopyfrm();
pcp.Show();
if (dt != null) dt.Dispose();
pcp.Dispose();
this.Cursor = Cursors.Default;
}
DataTable dt1 = new DataTable();
dt1.Columns.Add("first");//这里添加你要的列,看你需求要多少列就加多少列
dt1.Columns.Add("second");
if (dataGridView1.SelectedRows.Count > 0)//这里判断是否有选中
{
DataRow drRow = dt1.NewRow();
drRow["first"] = dataGridView1.SelectedRows[0].Cells["first"].Value.ToString();//这里给列赋值
drRow["second"] = dataGridView1.SelectedRows[0].Cells["second"].Value.ToString();
dt1.Rows.Add(drRow);//把行添加到DataTable里
}
frmAnother another = new frmAnother(dt1);//把dt1当作一个参数传递到新窗体
another.Show();
if (dt1 != null)
{
dt1.Dispose();
}
//another.Show();//这里就不要写了,要不然没法显示新窗体然后在新窗体frmAnother中,加入如下代码 DataTable dtSource = new DataTable();
public frmAnother(DataTable dt)//新添加一个带参数的构造函数
{
InitializeComponent();
dtSource = dt;
} private void frmAnother_Load(object sender, EventArgs e)//这里是窗体的加载事件,你双击窗体就有了
{
dataGridView1.DataSource = dtSource;
}
这是其中一个方法,还有其他的方法,你可以自己多试试,不要怕错,多练练就行了
这个是怎么回事呢?另该怎么讲参数传递过去呢?
frmAnother是新窗体,你要在新窗体的后台代码里添加一个带参数的构造函数啊,你打开frmAnother的后台代码,你会看到有以下一段代码public frmAnother()
{
InitializeComponent();
}这是窗体自动生成的无参构造函数,不要删除也不要改动,自己重新添加一个带参数的构造函数,如下代码//这一段是窗体自动生成的,不用改也不用删除
public frmAnother()
{
InitializeComponent();
}
public frmAnother()
{
InitializeComponent();
}
//下面这段才是自己添加的带参数的构造函数
DataTable dtSource = new DataTable();
public frmAnother(DataTable dt)//新添加一个带参数的构造函数
{
InitializeComponent();
dtSource = dt;
}
最好有具体的示例代码,谢谢!