C# DataGridView从列标记获取列名称

C# DataGridView从列标记获取列名称,c#,.net,datagridview,C#,.net,Datagridview,这是一个简单的问题,但在搜索了很多之后,我没有找到解决方案。我想通过列标记获取DataGridView的ColumnName。我在每一列上都贴上了带有列名的标签 编辑: 我还将十进制值存储在标记中 这是我的代码: DataGridViewColumn dgCol = new DataGridViewColumn(); dgCol.Name = "MyCol"; dgCol.Tag = 10; DataGridView1.Columns.Add(dgCol ); 而标记的类型为对象。现在我想设

这是一个简单的问题,但在搜索了很多之后,我没有找到解决方案。我想通过列标记获取
DataGridView
ColumnName
。我在每一列上都贴上了带有列名的标签

编辑:
我还将十进制值存储在标记中

这是我的代码:

DataGridViewColumn dgCol = new DataGridViewColumn();
dgCol.Name = "MyCol";
dgCol.Tag = 10; 
DataGridView1.Columns.Add(dgCol );
而标记的类型为
对象
。现在我想设置单元格的值,但我的列标记不是名称,我也不知道列索引

DataGridView1.Rows[1].Cells[" _**Dont Have ColumnName**_ "].Value = 100;  

但我有列标签。那么,有什么方法可以从column标签中获取列名呢

试试这个:
您可以通过以下方式获取列名称。
假设我有两列:col1和col2
1.直接使用列对象

        dataGridView1.Rows[0].Cells[col1.Name].Value = "100";
2.或直接通过列索引

        dataGridView1.Rows[0].Cells[dataGridView1.Columns[0].Name].Value = "100";

希望这有帮助

试试看:
您可以通过以下方式获取列名称。
假设我有两列:col1和col2
1.直接使用列对象

        dataGridView1.Rows[0].Cells[col1.Name].Value = "100";
2.或直接通过列索引

        dataGridView1.Rows[0].Cells[dataGridView1.Columns[0].Name].Value = "100";

希望这有帮助

您可以遍历所有

DataGridViewColumn getcol;

foreach(DataGridViewColumn c in DataGridView1.Columns)
{
    if(c.Tag as String == "10")
    {
        getcol = c;
    }
}
现在您可以使用这个
getcol

DataGridView1.Rows[1].Cells[getcol.Name].Value = 100;

您可以遍历所有

DataGridViewColumn getcol;

foreach(DataGridViewColumn c in DataGridView1.Columns)
{
    if(c.Tag as String == "10")
    {
        getcol = c;
    }
}
现在您可以使用这个
getcol

DataGridView1.Rows[1].Cells[getcol.Name].Value = 100;

这是对我先前答案的改进
您还可以使用linq,它更短、更整洁。

    var col = dataGridView1.Columns.Cast<DataGridViewColumn>().Where(c => c.Tag == "10").Single();
    dataGridView1.Rows[1].Cells[col.Name].Value = "100";
var col=dataGridView1.Columns.Cast()。其中(c=>c.Tag==“10”).Single();
dataGridView1.Rows[1]。单元格[col.Name]。Value=“100”;

这是对我先前答案的改进
您还可以使用linq,它更短、更整洁。

    var col = dataGridView1.Columns.Cast<DataGridViewColumn>().Where(c => c.Tag == "10").Single();
    dataGridView1.Rows[1].Cells[col.Name].Value = "100";
var col=dataGridView1.Columns.Cast()。其中(c=>c.Tag==“10”).Single();
dataGridView1.Rows[1]。单元格[col.Name]。Value=“100”;


我猜您已经为列提供了名称,如代码中提到的
mycl
,您已经添加了单元格[0]或任意单元格数如果这是代码,则
DataGridView1.Rows[1]。单元格[“mycl”]。值=100应该可以工作..是的,我为列提供名称,但在运行时我得到一些十进制值,该值与列tagi进行比较。我几乎有90列,但我没有得到列名运行时我只得到一些十进制值,我正在与tagi进行比较。我想您已经为列提供了名称,如您在代码中提到的
mycl
have addedCells[0]或任意单元格数如果这是代码,则
DataGridView1.行[1]。单元格[“mycl”]。值=100应该可以工作..是的,我为列提供名称,但在运行时我得到一些十进制值,该值与列tagi进行比较。我几乎有90列,但我没有得到列名运行时我只得到一些十进制值,我正在与讨论中提到的tagas进行比较。他没有讨论中提到的任何列索引,他没有columndecimal varvalue的任何索引=1;DataGridView1.Columns.Cast().Where(w=>w.Tag==varvalue.ToString()).Single();它给出的错误序列不包含匹配的错误,但有一列的标记为1try this-dataGridView1.Columns.Cast()。其中(c=>c.tag.Equals(varvalue.ToString())).First();它仍然显示错误,但此时错误是对象引用未设置为objectdecimal varvalue=1的实例;DataGridView1.Columns.Cast().Where(w=>w.Tag==varvalue.ToString()).Single();它给出的错误序列不包含匹配的错误,但有一列的标记为1try this-dataGridView1.Columns.Cast()。其中(c=>c.tag.Equals(varvalue.ToString())).First();它仍然显示错误,但此时错误是对象引用未设置为对象的实例