gpt4 book ai didi

c# - 无法访问要在 HandleRequest 中使用的 EventArgs e 值

转载 作者:太空宇宙 更新时间:2023-11-03 19:23:59 25 4
gpt4 key购买 nike

我只是在了解事件、委托(delegate)和订阅者。在过去的两天里,我一直在研究和思考这一切。我无法访问在我的 EventArgs e 值中传递的信息。我有一个保存的项目想要打开。必要形式的状态被反序列化到字典中。命中一个循环,引发 UnpackRequest 传递键/值。

ProjectManager.cs 文件:

public delegate void EventHandler<TArgs>(object sender, TArgs args) where TArgs : EventArgs;
public event EventHandler<UnpackEventArgs> UnpackRequest;

然后再往下:

ProjectManager.cs 文件:

//Raise a UnpackEvent //took out virtual
protected void RaiseUnpackRequest(string key, object value)
{
if (UnpackRequest != null) //something has been added to the list?
{
UnpackEventArgs e = new UnpackEventArgs(key, value);
UnpackRequest(this, e);
}
}

然后在 open 方法中,在用每种形式的状态填充字典后:

ProjectManager.cs 文件:

foreach (var pair in dictPackState) {
string _key = pair.Key;
dictUnpackedState[_key] = dictPackState[_key];
RaiseUnpackRequest(pair.Key, pair.Value); //raises the event.
}

我有一个事件类:

public class UnpackEventArgs : EventArgs
{
private string strKey;
private object objValue;

public UnpackEventArgs(string key, object value)
{
this.strKey = key;
this.objValue = value;
}
//Public property to read the key/value ..and get them out
public string Key
{
get { return strKey; }
}
public object Value
{
get { return objValue; }
}
}

我仍在编写添加订阅者的代码,以及如何在各个表单中重新构建项目组件。但是我现在尝试处理的部分是在 MainForm.cs 中,我在其中使用通过的参数处理解压请求。我的 e 包含键值,键表示将值发送到哪里(即表单对象)。

private void HandleUnpackRequest(object sender, EventArgs e)
{
//reflection happens here. turn key into object
//why can't i get e.key ???
object holder = e; //holder = VBTools.UnpackEventArgs key... value...all info

//object goToUnpack = (e.key).GetType();
//goToUnpack.unpackState(e.value);
}

我想我包含了所有必要的部分来获得帮助?!谢谢!

最佳答案

改变这个:

private void HandleUnpackRequest(object sender, EventArgs e) 

对此:

private void HandleUnpackRequest(object sender, UnpackEventArgs e) 

记住您的事件处理程序声明:

public event EventHandler<UnpackEventArgs> UnpackRequest;

关于c# - 无法访问要在 HandleRequest 中使用的 EventArgs e 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10147843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com