我已經在C#Winforms中使用GridView創建了一個日曆。我正在嘗試獲取所有選定單元格的值。獲取選定的單元格值
在一個簡單的按鈕點擊時,輸出應爲: 2,5,8,10,13,18,21,26,29
我有一個很難找到一種獲取所有選定單元格的日期/值的方法。任何想法是高度讚賞。謝謝!
我已經在C#Winforms中使用GridView創建了一個日曆。我正在嘗試獲取所有選定單元格的值。獲取選定的單元格值
在一個簡單的按鈕點擊時,輸出應爲: 2,5,8,10,13,18,21,26,29
我有一個很難找到一種獲取所有選定單元格的日期/值的方法。任何想法是高度讚賞。謝謝!
出於某種原因,當我嘗試使用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());
}
試試這個代碼:
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");
}
}
}
使用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()
。