这是一个问题。我有一个餐厅计划,客户选择他想吃的东西,数据显示在dataGridView中。例如,6种不同的菜肴= 6种不同的行,每行包含名称,数量和价格。毕竟我需要打印账单,所以我想从dataGridView获取所有信息到文本框。所有行。我怎么能这样做?
P.S。我搜索了很多,但只有关于如何将CurrentRow数据传输到我找到的文本框的信息。
private void Form4_Load(object sender, EventArgs e)
{
Form1 f1 = new Form1();
string billinfo = string.Empty;
foreach (DataGridViewRow row in f1.dataGridView1.Rows)
{
billinfo = string.Format("{0}{1} {2} {3}{4}", billinfo, row.Cells["Name"].Value, row.Cells["Amount"].Value, row.Cells["Price"].Value, Environment.NewLine);
}
textBox1.Text = billinfo;
}
答案 0 :(得分:0)
只需循环遍历每一行并将列值格式化为字符串,添加System.Environment.NewLine
即可分隔TextBox
中的条目。
string billInfo = string.Empty;
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
billInfo = string.Format("{0}{1} {2} {3}{4}", billInfo, row.Cells["Name"].Value, row.Cells["Amount"].Value, row.Cells["Price"].Value, Environment.NewLine);
}
this.textBox1.Text = billInfo;
答案 1 :(得分:0)
您似乎有多种形式。每个表单都有自己的“上下文”,以跟踪每个表单属于哪些“控件”。
在您的代码中,“ Form4_Load”是启动“ Form4”期间触发的事件。然后在此方法中创建“ new Form1()”。这是Form1类型的新的空Form。但是,它与您的“ Form1”的第一个实例没有任何关系或链接。您必须使用已经创建的“ f1”。
一种修复程序的粗略方法如下(下),但是获取对象和用法的全局实例不是一个好习惯。轻松跟踪哪些对象有效。无论如何,这是我的简单解决方法。
enter code here
private void Form4_Load(object sender, EventArgs e)
{
//I am assuming f1 is the name of your original Form1
String f1DataGridViewName = f1.dataGridView1.Name.ToString();
int f1RowCount = f1.RowCount;
string billinfo = string.Empty;
Console.Writeline("Form1 f1 Datagridview name is: {0}
,Form1 f1 DataGridview row count is : {1}"
,f1DataGridViewName, f1RowCount );
foreach (DataGridViewRow row in f1.dataGridView1.Rows)
{
billinfo = string.Format("{0}{1} {2} {3}{4}", billinfo
, row.Cells["Name"].Value
, row.Cells["Amount"].Value
, row.Cells["Price"].Value
, Environment.NewLine);
}
textBox1.Text = billinfo;
}