的詞典我有寫一個DataGridView
到一個文本文件的方法:創建函數功能
private void textToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.FileName = DateTime.Now.ToString("yyyyMMddhhmm") + "_icmquery_" + GetTabName() + ".txt";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
using (FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate))
{
switch (mainTabGroup.SelectedTab.Name.ToString())
{
case "findScriptsTab":
WriteTextFile(fs, findScriptsDataGrid);
break;
case "dialNumberAuditTab":
WriteTextFile(fs, findScriptsDataGrid);
break;
case "calltypeRequalificationTab":
WriteTextFile(fs, ctrDataGrid);
break;
case "targetAuditTab":
WriteTextFile(fs, targetAuditDataGrid);
break;
}
}
}
}
public void WriteTextFile(FileStream fs, DataGridView dataGrid)
{
using (TextWriter tw = new StreamWriter(fs))
{
foreach (DataGridViewRow row in dataGrid.Rows)
{
string line = string.Empty;
foreach (DataGridViewCell cell in row.Cells)
{
line = line + cell.Value + ",";
}
line = line.TrimEnd(',');
tw.WriteLine(line);
}
}
}
但不是在textToolStripMenuItem_Click()
使用大開關語句我想定義在我的形式的字典。我曾嘗試過:
private Dictionary<TabPage, Func<FileStream, DataGridView>> WriteTextFileByTab(FileStream fs) = new Dictionary<TabPage, Func<FileStream, DataGridView>>()
{
{findScriptsTab, WriteTextFile(fs, findScriptsDataGrid)}
};
但是視覺工作室甚至不會將此註冊爲有效的事情。我手動輸入了這些信息,但沒有一個會填充任何內容。當我將鼠標懸停在「findScriptsTab」上時,它表示它的字段類似於類型,而WriteTextFile表示同樣的東西。關於如何將switch語句正確轉換爲字典的任何想法,我只能說:WriteTextFileByTab[mainTabGroup.SelectedTab];
?
這不是一個有效的東西......它看起來像你試圖寫一個方法,但使用錯誤的語法。或者,如果您不應該在另一種方法中使用關鍵字private。檢查你的語法,如果你不能發現錯誤,澄清代碼塊在哪裏(即在一個方法內部或類內部)。 – Chris
所有這些生活在一個表單類中。 – aaronmallen
你絕對可以做到這一點 - 我過去做過類似的事情。一種觀察是你已經將字典定義爲'Dictionary> - 但是,'WriteTextFile'返回void,所以你需要一個'Action'來代替。 –