积极答复者
C# Winform DataGridView控件即时计算金额问题

问题
答案
-
public partial class Form1 : Form { private int rowIndex = 0; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("数量", typeof(int)); dt.Columns.Add("单价", typeof(int)); dt.Columns.Add("总价", typeof(int)); //随机生成数据 Random r = new Random(Guid.NewGuid().GetHashCode()); for (int i = 1; i < 11; i++) { dt.Rows.Add(r.Next(1, 6), r.Next(1000, 2001)); } dataGridView1.DataSource = dt; dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing; } void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewTextBoxEditingControl) { DataGridViewTextBoxEditingControl dc = e.Control as DataGridViewTextBoxEditingControl; dc.TextChanged += dc_TextChanged; rowIndex = dc.EditingControlRowIndex; } } void dc_TextChanged(object sender, EventArgs e) { DataGridViewTextBoxEditingControl c= sender as DataGridViewTextBoxEditingControl; dataGridView1.Rows[rowIndex].Cells[2].Value = Convert.ToInt32(c.Text) * Convert.ToInt32(dataGridView1.Rows[rowIndex].Cells[1].Value); } }
假设你的界面上只有一个dataGridView控件。
- 已标记为答案 feiyun0112Moderator 2012年9月10日 3:22
全部回复
-
public partial class Form1 : Form { private int rowIndex = 0; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("数量", typeof(int)); dt.Columns.Add("单价", typeof(int)); dt.Columns.Add("总价", typeof(int)); //随机生成数据 Random r = new Random(Guid.NewGuid().GetHashCode()); for (int i = 1; i < 11; i++) { dt.Rows.Add(r.Next(1, 6), r.Next(1000, 2001)); } dataGridView1.DataSource = dt; dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing; } void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewTextBoxEditingControl) { DataGridViewTextBoxEditingControl dc = e.Control as DataGridViewTextBoxEditingControl; dc.TextChanged += dc_TextChanged; rowIndex = dc.EditingControlRowIndex; } } void dc_TextChanged(object sender, EventArgs e) { DataGridViewTextBoxEditingControl c= sender as DataGridViewTextBoxEditingControl; dataGridView1.Rows[rowIndex].Cells[2].Value = Convert.ToInt32(c.Text) * Convert.ToInt32(dataGridView1.Rows[rowIndex].Cells[1].Value); } }
假设你的界面上只有一个dataGridView控件。
- 已标记为答案 feiyun0112Moderator 2012年9月10日 3:22
-
public partial class Form1 : Form { private int rowIndex = 0; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("数量", typeof(int)); dt.Columns.Add("单价", typeof(int)); dt.Columns.Add("总价", typeof(int)); //随机生成数据 Random r = new Random(Guid.NewGuid().GetHashCode()); for (int i = 1; i < 11; i++) { dt.Rows.Add(r.Next(1, 6), r.Next(1000, 2001)); } dataGridView1.DataSource = dt; dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing; } void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewTextBoxEditingControl) { DataGridViewTextBoxEditingControl dc = e.Control as DataGridViewTextBoxEditingControl; dc.TextChanged += dc_TextChanged; rowIndex = dc.EditingControlRowIndex; } } void dc_TextChanged(object sender, EventArgs e) { DataGridViewTextBoxEditingControl c= sender as DataGridViewTextBoxEditingControl; dataGridView1.Rows[rowIndex].Cells[2].Value = Convert.ToInt32(c.Text) * Convert.ToInt32(dataGridView1.Rows[rowIndex].Cells[1].Value); } }
假设你的界面上只有一个dataGridView控件。