2016-10-22 7 views
1

Я создал календарь, используя GridView в C# Winforms. Я пытаюсь получить значения всех выбранных ячеек.Получить выделенные значения ячейки

enter image description here

На простым нажатием кнопки, выход должен быть: 2, 5, 8, 10, 13, 18, 21, 26, 29

Я с трудом находя способ получить даты/значение всех выбранных ячеек. Любая идея высоко ценится. Благодаря!

ответ

0

По какой-то причине я столкнулся с ошибками, когда пытался использовать коды 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()); 
    } 
1

Попробуйте этот код:

  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"); 

        } 
       } 
      } 
1

Используйте DataGridView.SelectedCells свойство и метод расширения LINQ Enumerable.Cast

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

values будет типа IEnumerable<object>, потому что DataGridViewCell.Value возвращение object типа.

string.Join будет использовать StringBuilder и позвонит .ToString() для каждого элемента в коллекции.

Смежные вопросы