C# 从多个文本框、datetimepicker和combobox向datagridview其他表单c添加一行#
我想将多个文本框中的一行、一个日期时间选择器和一个组合框(form2)添加到datagridview(form1)。如果我想把这行加起来,它就加不起来了。我真正想要的是一个集成的autosave/autoload,我想要创建一个只有列的空白datagridview,这样用户就可以手动添加数据行。 我会再解释一下我在这里建造的东西;Form1:将有一个datagridview(用于存储一些用户添加的数据)、3个文本框(textbox1=列[5]的总量、textbox2=列[5]的总量,其中列[6]为“Nee”,textbox3=textbox1-textbox2)和打开form2的按钮;Form2:将有1个datetimepicker、5个文本框、1个combobox和一个按钮,其中将添加datetimepicker、5个文本框和combobox作为datagridview中的新行。 我还希望在关闭和打开程序时自动保存和加载数据。到目前为止,我得到的是: 节目:C# 从多个文本框、datetimepicker和combobox向datagridview其他表单c添加一行#,c#,winforms,datagridview,C#,Winforms,Datagridview,我想将多个文本框中的一行、一个日期时间选择器和一个组合框(form2)添加到datagridview(form1)。如果我想把这行加起来,它就加不起来了。我真正想要的是一个集成的autosave/autoload,我想要创建一个只有列的空白datagridview,这样用户就可以手动添加数据行。 我会再解释一下我在这里建造的东西;Form1:将有一个datagridview(用于存储一些用户添加的数据)、3个文本框(textbox1=列[5]的总量、textbox2=列[5]的总量,其中列[6]
using System;
using System.Windows.Forms;
namespace Javell_Administratie_Software
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run (new Overzicht());
}
}
}
表格2:
using System;
using System.Windows.Forms;
namespace Javell_Administratie_Software
{
public partial class Toevoegen : Form
{
public Toevoegen()
{
InitializeComponent();
}
public void Toevoegen2_Click(object sender, EventArgs e)
{
Overzicht oz = new Overzicht();
oz.AddDataTableRow();
oz.Overzicht1.DataSource = oz.dt;
oz.Overzicht1.Update();
this.Close();
}
}
}
必须将公共参数添加到form2中
using System;
using System.Windows.Forms;
namespace Javell_Administratie_Software
{
public partial class Toevoegen : Form
{
public Toevoegen()
{
InitializeComponent();
}
public object Row{get;set;}
public void Toevoegen2_Click(object sender, EventArgs e)
{
Row= new object[]{
tv.dateTimePicker1.Value, tv.textBox1.Text,
tv.textBox2.Text, tv.textBox3.Text, tv.textBox4.Text,
tv.textBox5.Text, tv.comboBox1.Text
};
this.Close();
}
}
}
编辑表格1
public void AddDataTableRow(Object row)
{
dt.Rows.Add(row);
}
public void Toevoegen1_Click(object sender, EventArgs e)
{
Toevoegen tv = new Toevoegen();
tv.ShowDialog();
AddDataTableRow(tv.Row);
}
必须将公共参数添加到form2中
using System;
using System.Windows.Forms;
namespace Javell_Administratie_Software
{
public partial class Toevoegen : Form
{
public Toevoegen()
{
InitializeComponent();
}
public object Row{get;set;}
public void Toevoegen2_Click(object sender, EventArgs e)
{
Row= new object[]{
tv.dateTimePicker1.Value, tv.textBox1.Text,
tv.textBox2.Text, tv.textBox3.Text, tv.textBox4.Text,
tv.textBox5.Text, tv.comboBox1.Text
};
this.Close();
}
}
}
编辑表格1
public void AddDataTableRow(Object row)
{
dt.Rows.Add(row);
}
public void Toevoegen1_Click(object sender, EventArgs e)
{
Toevoegen tv = new Toevoegen();
tv.ShowDialog();
AddDataTableRow(tv.Row);
}
好的,这就是我解决你问题的方法。然而,它可能需要大量的代码返工
好的,这就是我解决你问题的方法。然而,它可能需要大量的代码返工
如果我这样做,我会得到一个错误,即待添加的行比列数长如果我这样做,我会得到一个错误,即待添加的行比列数长X这给了我很多阅读、学习和尝试的机会:P我现在就给你解决的问题,因为这可能是wright的答案,我让你知道我什么时候让它工作!让您随时了解。@Javell只是一个注释,说明为什么直接向datagridview添加数据可能不是最好的方法,以及为什么开发类可能是最好的方法。如果您需要更新、编辑或使用数据,最好使用类。例如,假设您想要获取DateTimePicker信息,您现在访问它的方式是硬编码该信息所在的列和行,但假设您想要在datagridview中包含另一列,这将导致您现在需要更改逻辑,因为列可能会移动。你现在这样做是可能的,但会很难。这给了我很多阅读、学习和尝试的机会:P我现在就给你答案,因为这可能是赖特的答案,我得到答案后会告诉你