Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从DataGridView中获取所选列的计数_C#_.net_Asp.net_Datagridview - Fatal编程技术网

C# 从DataGridView中获取所选列的计数

C# 从DataGridView中获取所选列的计数,c#,.net,asp.net,datagridview,C#,.net,Asp.net,Datagridview,我有什么: 填充数据网格视图 此网格的选定单元格 我想要什么: 所选单元格的唯一列数 这些列的名称 我发现: int selectedColumnsCount = dataGridView3.SelectedColumns.Count; 不知何故,这段代码在我的情况下不起作用 我的问题:如何从DataGridView中获取列名称和所选列的数量 这就是我现在创造的: int selectedCellCount = dataGridView3.GetCellCount(DataGridVi

我有什么:

  • 填充数据网格视图
  • 此网格的选定单元格
我想要什么:

  • 所选单元格的唯一列数
  • 这些列的名称
我发现:

int selectedColumnsCount = dataGridView3.SelectedColumns.Count;
不知何故,这段代码在我的情况下不起作用

我的问题:如何从
DataGridView
中获取列名称和所选列的数量

这就是我现在创造的:

int selectedCellCount = dataGridView3.GetCellCount(DataGridViewElementStates.Selected);
int selectedcolumncount = dataGridView3.SelectedColumns.Count;
ArrayList arr = new ArrayList();
int j = 0;

if (selectedCellCount > 0)
{
   for (int i = 0; i < selectedCellCount; i++)
   {
      int Xcor2 = int.Parse(dataGridView3.SelectedCells[i].ColumnIndex.ToString());
      test = test + dataGridView3.Columns[Xcor2].Name;
      arr.Add(dataGridView3.Columns[Xcor2].Name);
   }
}

ArrayList arr2 = new ArrayList();
foreach (string str in arr)
{
   if (!arr2.Contains(str))
   {
      arr2.Add(str);
      j++;
   }
}
int-selectedCellCount=dataGridView3.GetCellCount(DataGridViewElementStates.Selected);
int selectedcolumncount=dataGridView3.SelectedColumns.Count;
ArrayList arr=新的ArrayList();
int j=0;
如果(selectedCellCount>0)
{
对于(int i=0;i

这是我自己做的,不是很好,但它的工作是获得列数如果有人有更好的方法实现这一点,请随意添加您不能选择列。一次只能选择一列! 列与行相同。
或者您的意思是获取这些列,选择哪些单元格?

您不能选择列。一次只能选择一列! 列与行相同。 或者您是想获取这些列,选择哪些单元格?

您可以注册事件并处理。比如说

public Form1()
{
   InitializeComponent();
   dataGridView1.SelectionChanged += new EventHandler(dataGridView1_SelectionChanged);
}

HashSet<int> column_indicies = new HashSet<int>();
HashSet<string> column_names = new HashSet<string>();
int number_of_columns = 0;

void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
   column_indicies.Clear();
   column_names.Clear();
   foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
   {
      // Set of column indicies
      column_indicies.Add(cell.ColumnIndex);
      // Set of column names
      column_names.Add(dataGridView1.Columns[cell.ColumnIndex].Name);
   }
   // Number of columns the selection ranges over
   number_of_columns = column_indicies.Count;
}
public Form1()
{
初始化组件();
dataGridView1.SelectionChanged+=新事件处理程序(dataGridView1\u SelectionChanged);
}
HashSet column_indicies=新HashSet();
HashSet column_names=新HashSet();
整列的整数=0;
void dataGridView1\u SelectionChanged(对象发送方,事件参数e)
{
列_表示。清除();
列名称。清除();
foreach(dataGridView1.SelectedCells中的DataGridViewCell单元格)
{
//列标记集
列标识。添加(单元格。列索引);
//列名称集
column_names.Add(dataGridView1.Columns[cell.ColumnIndex].Name);
}
//选择范围覆盖的列数
列数=列指示数。计数;
}
您可以注册事件并处理。比如说

public Form1()
{
   InitializeComponent();
   dataGridView1.SelectionChanged += new EventHandler(dataGridView1_SelectionChanged);
}

HashSet<int> column_indicies = new HashSet<int>();
HashSet<string> column_names = new HashSet<string>();
int number_of_columns = 0;

void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
   column_indicies.Clear();
   column_names.Clear();
   foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
   {
      // Set of column indicies
      column_indicies.Add(cell.ColumnIndex);
      // Set of column names
      column_names.Add(dataGridView1.Columns[cell.ColumnIndex].Name);
   }
   // Number of columns the selection ranges over
   number_of_columns = column_indicies.Count;
}
public Form1()
{
初始化组件();
dataGridView1.SelectionChanged+=新事件处理程序(dataGridView1\u SelectionChanged);
}
HashSet column_indicies=新HashSet();
HashSet column_names=新HashSet();
整列的整数=0;
void dataGridView1\u SelectionChanged(对象发送方,事件参数e)
{
列_表示。清除();
列名称。清除();
foreach(dataGridView1.SelectedCells中的DataGridViewCell单元格)
{
//列标记集
列标识。添加(单元格。列索引);
//列名称集
column_names.Add(dataGridView1.Columns[cell.ColumnIndex].Name);
}
//选择范围覆盖的列数
列数=列指示数。计数;
}

好的,这是获取列名的方法之一(您甚至可以使用HeaderText属性而不是Name):

List listocolumns=new List();
foreach(dataGridView1.SelectedCells中的DataGridViewCell单元格)
{
DataGridViewColumn col=dataGridView1.Columns[cell.ColumnIndex]作为DataGridViewColumn;
如果(!listocolumns.Contains(col))
列列表。添加(列);
}
StringBuilder sb=新的StringBuilder();
foreach(列列表中的DataGridViewColumn列)
某人(列名);
Show(“所选单元格的列名为:\n”+sb.ToString());

好的,这是获取列名的方法之一(您甚至可以使用HeaderText属性而不是Name):

List listocolumns=new List();
foreach(dataGridView1.SelectedCells中的DataGridViewCell单元格)
{
DataGridViewColumn col=dataGridView1.Columns[cell.ColumnIndex]作为DataGridViewColumn;
如果(!listocolumns.Contains(col))
列列表。添加(列);
}
StringBuilder sb=新的StringBuilder();
foreach(列列表中的DataGridViewColumn列)
某人(列名);
Show(“所选单元格的列名为:\n”+sb.ToString());