Я просто узнаю о событиях, делегатах и подписчиках. Я провел последние 2 дня, исследуя и обертывая свой мозг вокруг всего этого. Я не могу получить доступ к информации, передаваемой в моем значении EventArgs e. У меня есть сохраненный проект, который хочет открыть. Состояние необходимых форм десериализуется в словаре. Возникает цикл, который повышает значение UnpackRequest, передавая ему ключ/значение.не удалось получить доступ к значению EventArgs e для использования в HandleRequest
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);
}
}
Затем в рамках открытого метода, после того, как словарь получает заселена с состояниями каждого Форма:
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, где я обрабатываю Unpacked Request, используя полученные аргументы. Мой 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);
}
Я думаю, что я включил в себя все необходимые детали, чтобы получить помощь ?! БЛАГОДАРЯ!
Спасибо так много !! Вот так! –
Прохладный. Отметьте его как «Ответ». – AlfredBr