title: How to pass EventArgs from View to Presenter in MVP?
body: <p>I have an application based on MVP, WinForms and EntityFramework.
  At one form I need to validate cell value, but I don't know proper way to pass EventArgs from Validating event of DataGridView to my presenter.</p>
  
  <p>I have this Form (unrelated code omitted):</p>
  
  <pre><code>public partial class ChargeLinePropertiesForm : Form, IChargeLinePropertiesView
  {
      public event Action CellValidating;
  
      public ChargeLinePropertiesForm()
      {
          InitializeComponent();
          dgBudget.CellValidating += (send, args) =&gt; Invoke(CellValidating);
      }
  
      private void Invoke(Action action)
      {
          if (action != null) action();
      }
  
      public DataGridView BudgetDataGrid
      {
          get { return dgBudget; }
      }
  }
  </code></pre>
  
  <p>Interface:</p>
  
  <pre><code>public interface IChargeLinePropertiesView:IView
  {
      event Action CellValidating;
      DataGridView BudgetDataGrid { get; }
  }
  </code></pre>
  
  <p>And this presenter:</p>
  
  <pre><code>public class ChargeLinePropertiesPresenter : BasePresenter&lt;IChargeLinePropertiesView, ArgumentClass&gt;
  {
      public ChargeLinePropertiesPresenter(IApplicationController controller, IChargeLinePropertiesView view)
          : base(controller, view)
      {
          View.CellValidating += View_CellValidating;
      }
  
      void View_CellValidating()
      {
          //I need to validate cell here based on dgBudget.CellValidating EventArgs
          //but how to pass it here from View?
  
          //typeof(e) == DataGridViewCellValidatingEventArgs
          //pseudoCode mode on
          if (e.FormattedValue.ToString() == "Bad")
          {
              View.BudgetDataGrid.Rows[e.RowIndex].ErrorText =
                  "Bad Value";
              e.Cancel = true;
          }
          //pseudoCode mode off
      }
  }
  </code></pre>
  
  <p>Yes, I could expose a property through interface and set my EventArgs to this property in View to get them from Presenter, but this is ugly, isn't it?</p>