2016-10-22 98 views
1

我已經在C#Winforms中使用GridView創建了一個日曆。我正在嘗試獲取所有選定單元格的值。獲取選定的單元格值

enter image description here

在一個簡單的按鈕點擊時,輸出應爲: 2,5,8,10,13,18,21,26,29

我有一個很難找到一種獲取所有選定單元格的日期/值的方法。任何想法是高度讚賞。謝謝!

回答

0

出於某種原因,當我嘗試使用Fabio's和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); 

valuesIEnumerable<object>類型的,因爲DataGridViewCell.Value回報object型。

string.Join將使用StringBuilder並且將針對集合中的每個項目調用.ToString()

相關問題