Вам нужно будет удерживать ссылку на экземпляр InputEventArgs
, чтобы вы могли прочитать Value
из него после возникновения события:
void btnSubmit_Click(object sender, EventArgs e)
{
...
InputEventArgs eventArgs = new InputEventArgs(postName, value);
OnInputBound(this, eventArgs);
value = eventArgs.Value;
//Continue with new value...
}
Здесь следует помнить о том, что существуют сценарии, которые могут привести к неожиданным результатам:
- Слушатель может выбрать порождение потока и асинхронную обработку вызова
- Может быть несколько слушателей для одного и того же события, каждый из которых может назначить свое значение. Ваш код, конечно, будет видеть только последний назначенный код, но вы не сможете контролировать порядок вызова слушателей.
Возьмем, к примеру, следующий случай (первая точка выше):
void MyForm_OnInputBound(object sender, SingleForm.InputEventArgs e)
{
ThreadPool.QueueUserWorkItem(state =>
{
// perform some potentially lengthy database lookup or such
// and then assign a new value
e.Value = "new value";
});
}
В этом случае нет никакой гарантии, что значение будет присвоено до того, как ваш код в btnSubmit_Click
выберет "новое" значение из экземпляра InputEventArgs
.