【问题标题】:Get Selected Cell Values获取选定的单元格值
【发布时间】:2017-03-04 20:42:48
【问题描述】:

我在 C# Winforms 中使用 GridView 创建了一个日历。我正在尝试获取所有选定单元格的值。

点击一个简单的按钮,输出应该是: 2、5、8、10、13、18、21、26、29

我很难找到一种方法来获取所有选定单元格的日期/值。任何想法都受到高度赞赏。谢谢!

【问题讨论】:

    标签: c# winforms datagridview devexpress


    【解决方案1】:

    由于某种原因,我在尝试同时使用 Fabio 和 H.Fadlallah 的代码时遇到了错误。可能是因为我使用了 DevEx 组件。尽管他们确实帮助我创建了我现在使用的代码。

    无论如何,下面显示的是我习惯使用的代码,它以某种方式为我提供了我需要的东西。

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            StringBuilder xTokens = new StringBuilder();
            GridCell[] xCell = xgvCalendar.GetSelectedCells();
    
            for (int i = 0; i < xCell.Count(); i++)
            {
                int xRow = xCell[i].RowHandle;
                xTokens.Append(dtpTransDate.Value.ToString("MMMM") + " " + xgvCalendar.GetRowCellValue(xRow, xCell[i].Column.ToString()).ToString() + ", " + dtpTransDate.Value.ToString("yyyy"));
                if (i != xCell.Count()-1) xTokens.Append(" - ");
            }
    
            MessageBox.Show(xTokens.ToString());
        }
    

    【讨论】:

      【解决方案2】:

      使用DataGridView.SelectedCells属性和LINQ扩展方法Enumerable.Cast

      var values = gridView.SelectedCells.Cast<DataGridViewCell>().Select(cell => cell.Value);
      string output = string.Join(", ", selectedValues);
      

      values 将是 IEnumerable&lt;object&gt; 类型,因为 DataGridViewCell.Value 返回 object 类型。

      string.Join 将使用 StringBuilder 并为集合中的每个项目调用 .ToString()

      【讨论】:

        【解决方案3】:

        试试这个代码:

                    private void selectedCellsButton_Click(object sender, System.EventArgs e)
                    {
                        Int32 selectedCellCount =
                            dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
                        if (selectedCellCount > 0)
                        {
                            if (dataGridView1.AreAllCellsSelected(true))
                            {
                                MessageBox.Show("All cells are selected", "Selected Cells");
                            }
                            else
                            {
                                System.Text.StringBuilder sb =
                                    new System.Text.StringBuilder();
        
                                for (int i = 0;
                                    i < selectedCellCount; i++)
                                {
                                    sb.Append(dataGridView1.SelectedCells[i].Value.ToString()) ;
        
        
                              MessageBox.Show(sb.ToString(), "Selected Cells");
        
                            }
                        }
                    }
        

        【讨论】:

          猜你喜欢
          • 2018-03-10
          • 2012-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-09
          相关资源
          最近更新 更多