C# 填充DataGridView

C# 填充DataGridView,c#,winforms,datagridview,C#,Winforms,Datagridview,我在Form1上有一个DataGridView。我需要用其他类/方法中的特定方法填充Dgv,但我无法访问它,我需要帮助 DataGridView的名称是DataConsole 以下是推广Dgv需要使用的方法: public static void addrow(string modo, string acao, string info, int tipo_msg, string msg, string extra, int

我在
Form1
上有一个DataGridView。我需要用其他类/方法中的特定方法填充Dgv,但我无法访问它,我需要帮助

DataGridView的名称是
DataConsole

以下是推广Dgv需要使用的方法:

public static void addrow(string modo, string acao, string info, int tipo_msg, string msg,
                                    string extra, int tipo_extra, string origem, string fase_origem, string metodo)
        {
            int idrow = DataConsole.Rows.Add();

            using (DataGridViewRow row = DataConsole.Rows[idrow])
            {
                row.Cells["dg_data"].Value = DateTime.Now;
                row.Cells["dg_modo"].Value = modo;
                row.Cells["dg_acao"].Value = acao;
                row.Cells["dg_info"].Value = info;

                row.Cells["dg_tipo"].Value = tipo_msg;
                row.Cells["dg_msg"].Value = msg;
                row.Cells["dg_extra"].Value = extra;
                row.Cells["dg_TipoExtra"].Value = tipo_extra;
                row.Cells["dg_origem"].Value = origem;
                row.Cells["dg_FaseOrigem"].Value = fase_origem;
                row.Cells["dg_metodo"].Value = metodo;
            }
        }

您可以使用DataSource实现这一点,它比向网格中添加或更新任何GrdiRow更简单、更快。 可以找到有关数据源的更多详细信息。
另外,我建议您通过数据源本身获取和设置数据。

您可以使用数据源,它比向网格添加或更新任何GrdiRow更简单、更快。 可以找到有关数据源的更多详细信息。
另外,我建议您通过数据源本身获取和设置数据。

选项1

在类方法中为DataGridView类型的
DataConsole
添加一个参数,并将其作为参数传递给调用方

publicstaticvoidaddrow(
DataGridView dgv,
串模多,
弦阿考,
字符串信息,
内蒂波乌酒店,
串味精,
额外的字符串,
国际提波乌酒店,
弦宝石,
字符串为原始格式,
字符串(metodo)
{
var idrow=dgv.Rows.Add();
var行=dgv.行[idrow];
row.Cells[“dg_data”].Value=DateTime.Now;
行。单元格[“dg_modo”]。值=modo;
行。单元格[“dg_acao”]。值=acao;
行单元格[“dg_信息”]。值=信息;
行单元格[“dg_tipo”]。值=tipo_msg;
行单元格[“dg_msg”]。值=msg;
行单元格[“dg_额外”]。值=额外;
行单元格[“dg_TipoExtra”]。值=tipo_额外值;
行。单元格[“dg_origem”]。值=origem;
行单元格[“dg_FaseOrigem”]。值=fase_origem;
行。单元格[“dg_metodo”]。值=metodo;
}
然后您可以从
frm\u控制台
调用该方法,如下所示:

公共部分类frm_控制台:表单
{
//...
私人无效调用方()
{
addrow(DataConsole,//其余参数….);
}
}
选项2

DataConsole
控件的
Modifiers
属性设置为Public或Internal,在类方法中找到它的容器形式,然后访问它:

publicstaticvoidaddrow(
串模多,
弦阿考,
字符串信息,
内蒂波乌酒店,
串味精,
额外的字符串,
国际提波乌酒店,
弦宝石,
字符串为原始格式,
字符串(metodo)
{
var f=Application.OpenForms.OfType().FirstOrDefault();
如果(f==null)返回;
var idrow=f.DataConsole.Rows.Add();
var row=f.DataConsole.Rows[idrow];
row.Cells[“dg_data”].Value=DateTime.Now;
行。单元格[“dg_modo”]。值=modo;
行。单元格[“dg_acao”]。值=acao;
//……等等。
}
选项3

在DataGridView类型的方法类中声明一个静态变量,在
frm\u Console
construcor中将其设置为
DataConsole

公共类SomeClass
{
公共静态DataGridView DataConsole;
公共静态void addrow(
串模多,
弦阿考,
字符串信息,
内蒂波乌酒店,
串味精,
额外的字符串,
国际提波乌酒店,
弦宝石,
字符串为原始格式,
字符串(metodo)
{
如果(DataConsole==null)返回;//或引发异常。。。
var idrow=DataConsol.Rows.Add();
var row=数据控制台行[idrow];
row.Cells[“dg_data”].Value=DateTime.Now;
行。单元格[“dg_modo”]。值=modo;
行。单元格[“dg_acao”]。值=acao;
//……等等。
}       
}
公共部分类frm_控制台:表单
{
公共frm_控制台()
{
初始化组件();
SomeClass.DataConsol=this.DataConsole;
}
//...
}
选项4


将DataConsole相关例程保存在控件所属的
frm_控制台中。

选项1

在类方法中为DataGridView类型的
DataConsole
添加一个参数,并将其作为参数传递给调用方

publicstaticvoidaddrow(
DataGridView dgv,
串模多,
弦阿考,
字符串信息,
内蒂波乌酒店,
串味精,
额外的字符串,
国际提波乌酒店,
弦宝石,
字符串为原始格式,
字符串(metodo)
{
var idrow=dgv.Rows.Add();
var行=dgv.行[idrow];
row.Cells[“dg_data”].Value=DateTime.Now;
行。单元格[“dg_modo”]。值=modo;
行。单元格[“dg_acao”]。值=acao;
行单元格[“dg_信息”]。值=信息;
行单元格[“dg_tipo”]。值=tipo_msg;
行单元格[“dg_msg”]。值=msg;
行单元格[“dg_额外”]。值=额外;
行单元格[“dg_TipoExtra”]。值=tipo_额外值;
行。单元格[“dg_origem”]。值=origem;
行单元格[“dg_FaseOrigem”]。值=fase_origem;
行。单元格[“dg_metodo”]。值=metodo;
}
然后您可以从
frm\u控制台
调用该方法,如下所示:

公共部分类frm_控制台:表单
{
//...
私人无效调用方()
{
addrow(DataConsole,//其余参数….);
}
}
选项2

DataConsole
控件的
Modifiers
属性设置为Public或Internal,在类方法中找到它的容器形式,然后访问它:

publicstaticvoidaddrow(
串模多,
弦阿考,
字符串信息,
内蒂波乌酒店,
串味精,
额外的字符串,
国际提波乌酒店,
弦宝石,
字符串为原始格式,
字符串(metodo)
{
var f=Application.OpenForms.OfType().FirstOrDefault();
如果(f==null)返回;
var idrow=f.DataConsole.Rows.Add();
var row=f.DataConsole.Rows[idrow];
row.Cells[“dg_data”].Value=DateTime.Now;
行。单元格[“dg_modo”]。值=modo;
行。单元格[“dg_acao”]。值=acao;
//……等等。
}
选项3

在DataGridView类型的方法类中声明一个静态变量,将其设置为t
class RowData
{
    public string Modo {get; set;}
    public string Acao {get; set;}
    ...
}
DataGridView dataConsole = new DataGridView();
DataGridViewColumn columnModo = new DataGridViewColumn(){...}
DataGridViewColumn columnAcao = new DataGridViewColumn(){...}
... // create other columns

dataConsole.Columns.Add(columnModo);
dataConsole.Columns.Add(columnAcao);
...  // add other columns
// The data that will be as rows in your table:
BindingList<RowData> dataConsoleContent = new BindingList<RowData>();
List<RowData> initialData = ...
BindingList<RowData> dataConsoleContent = new BindingList<RowData>(initialData);
dataConsole.DataSource = dataConsoleContent;
RowData newRow = dataConsoleContent.AddNew();

// if you have data: just fill it
newRow.Modo = ...
newRow.Acao = ...
...
dataConsoleContent.ResetBinding().
private void OnButtonFinishedEditing_Clicked(object sender, ...)
{
    IEnumerable<DataRow> allDataRows = this.dataConsoleContent;
    ProcessEditedData(allDatarows);
}
List<Customer> customers = GetCustomers();
BindingListView<Customer> view = new BindingListView<Customer>(customers);
dataGridView1.DataSource = view;
DateTime dateLimit = DateTime.Now - TimeSpan.FromYears(65);
view.ApplyFilter(customer => customer.Birthday < dateLimit});