我试图从另一个Form中的DataGridView获取单元格计数值,我有Form1和Form2,在Form2中有一个DataGridView(dgResult),其接收来自01到25之间的DB的15个随机数,其中我对单元格之间的重复数进行计数,重复数由01到25的每个数的标签接收,这都在Form2中,我想在表格1中显示这些标签和计数结果,有人能帮助我吗?我有一门课,从数据库中获取数字:
public int concurso { get; set; }
public int _01 { get; set; }
public int _02 { get; set; }
public int _03 { get; set; }
public int _15 { get; set; }
//Class AddResult
public static DataTable ObterNumeros()
{
DataTable tabela = new DataTable();
DALConexao conexao = new DALConexao(DadosDaConexao.StringDaConexao);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conexao.ObjetConexao;
SqlDataAdapter da = new SqlDataAdapter("Select * from TBLotofacil ORDER BY Concurso DESC", conexao.StringConexao);
da.Fill(tabela);
return tabela;
}
创建网格的标题Form2
private void AtualizarInformacoesDoGrid()
{
//personalizaGrid();
dgResultadoGeral.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgResultadoGeral.DataSource = AddResultado.ObterNumeros();
if (dgResultadoGeral.Rows.Count != 0)
{
dgResultadoGeral.Columns[0].HeaderText = "Concurso";
dgResultadoGeral.Columns[0].Width = 97;
dgResultadoGeral.Columns[1].HeaderText = "01";
dgResultadoGeral.Columns[1].Width = 50;
dgResultadoGeral.Columns[15].HeaderText = "15";
dgResultadoGeral.Columns[15].Width = 50;
...获取细胞计数结果Form2
public void calculaTotalGrid()
{
int outVal = 0;
ResultadoNumeros = dgResultadoGeral.Rows.Cast<DataGridViewRow>()
.SelectMany(r => r.Cells.Cast<DataGridViewCell>()
.Where(c => c.ColumnIndex > 0 && int.TryParse(c.Value?.ToString(), out outVal)))
.GroupBy(c => int.Parse(c.Value.ToString()))
.ToDictionary(x => x.Key, x => x.Count());
int count1 = ResultadoNumeros[01];
lbl_01.Text = count1.ToString();
//fron 01 to 25
int count25 = ResultadoNumeros[25];
lbl_25.Text = count25.ToString();
}
1条答案
按热度按时间t5zmwmid1#
举个例子。
DataGridView
。注意,您可以利用
Tag
属性将标签Map到字典并在循环中填充标签。在每个窗体(form1
和form2
)的设计器中,选择lbl_01
并按F4
,在“属性”窗口中找到Tag
属性并分配1
。对其他25个标签执行相同的操作,并分配相应的值2
,3
,...25
。DisplayTheResults
方法现在应该看起来像这样:如果标签由不同的容器托管,则使用递归方法来获取它们:
现在,如果您需要从
form2
显示from1
,那么通过参数化构造函数将字典传递给form1
。