我刚接触 WinForms 。因此,我会尝试提供尽可能多的详细信息来解释我的问题。很抱歉遗漏了任何内容,如果您需要其他详细信息,请随时询问。
基本想法是在按下按钮"返回" DataTable 从字典返回到 DataGridView 。 >为此我假设我必须使用代表。我开始了解它们并卡在某个地方,但不确切知道在哪里。
我有2个班级:
1个类是发布者GUI_Mapping,我在其中声明了委托,事件并引发了这样的事件:
namespace Mapping.Forms {
public delegate DataTable returnDataTableHandler(object sender, GetDataTableIntoDictionary e);
public partial class GUI_Mapping : Form {
public GetDataTableIntoDictionary returnDGVObj = new GetDataTableIntoDictionary();
public event returnDataTableHandler BackButtonWasPressed;
protected virtual void OnBackButtonWasPressed()
{
if (BackButtonWasPressed != null)
BackButtonWasPressed(this, new GetDataTableIntoDictionary());
}
private void btnBackFromFunctionsMapping_Click(object sender, EventArgs e)
{
OnBackButtonWasPressed();
}
第二个类是 GetDataTableIntoDictionary ,它从字典中返回一个dataTable:
public class GetDataTableIntoDictionary: EventArgs
{
public DataTable ReturnDataTableByKey(object sender, EventArgs e)
{
if (dictionaryDGVdatatable.ContainsKey("mappingName"))
{
return dictionaryDGVdatatable["mappingName"];
}
return null;
}
}
我不确定我做错了什么,因为我可以在DataGridView中收到dataTable。 有人可以查看我的代码并解释我错过的内容。我很感激。
更新1(GetDataTableIntoDictionary的完整代码)
public class GetDataTableIntoDictionary: EventArgs
{
static Dictionary<string, DataTable> dictionaryDGVdatatable = new Dictionary<string, DataTable>();
private DataTable dt;
public static void StoreCurrentData(DataGridView dgwDisplayData, string mappingLayerName)
{
DataTable dt = new DataTable();
dt = GetCurrentDataTable.GetDataTableFromDGV(dgwDisplayData);
var ds = new List<dynamic>();
if (dt == null)
{
//do nothing
}
AddDataTableToDictionary(mappingLayerName,dt);
}
private static void AddDataTableToDictionary(string mappingLayerName, DataTable dt)
{
if(dt != null)
dictionaryDGVdatatable.Add(mappingLayerName, dt);
}
public DataTable ReturnDataTableByKey(object sender, EventArgs e)
{
if (dictionaryDGVdatatable.ContainsKey("mappingLayerName"))
{
return dictionaryDGVdatatable["mappingLayerName"];
}
return null;
}
}
}