DataGridView with error 'Operation cannot be performed in this event handler'

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
Here is my function. Im trying to add data to the datagridview without a datasource. The error is thrown on dgvTest.Rows.Clear(). If I comment out that line, the error is thrown on dgvTest.Rows.Add(row[0]);

<div style="color:Black;background-color:White; <pre>
<span style="color:Blue; private <span style="color:Blue; void AddToOutrights()
{
<span style="color:Blue; if (contractData != <span style="color:Blue; null)
{
<span style="color:Green; //dgvTest.Rows.Clear();
<span style="color:Blue; for (<span style="color:Blue; int i = 0; i < contractData.GetLength(0); i++)
{
<span style="color:Blue; if (contractData != <span style="color:Blue; null)
{
<span style="color:Blue; if (contractData.Contract_Type == <span style="color:#A31515; "O")
{
ListViewItem item = <span style="color:Blue; new ListViewItem(contractData.Contract_Name.Trim(), -1);
<span style="color:Green; //item.SubItems.Add(contractData.Order_ID);
item.SubItems.Add(String.Format(<span style="color:#A31515; "{0:MM/dd/yyyy}", contractData.ExpirationDt));
item.SubItems.Add(String.Format(<span style="color:#A31515; "{0:MM/dd/yyyy}", contractData.MeetingDt));
item.SubItems.Add(contractData.OpenPos.ToString());
item.SubItems.Add(contractData.TradePos.ToString());
item.SubItems.Add(contractData.NetPos.ToString());
item.SubItems.Add(contractData.PrevSettle.ToString());
item.SubItems.Add(contractData.CurrSettle.ToString());
item.SubItems.Add(contractData.AdjFuture.ToString(<span style="color:#A31515; "0.0"));
item.SubItems.Add(contractData.BP25Val.ToString());
item.SubItems.Add(contractData.BP25ValRemain.ToString());
item.SubItems.Add(contractData.P_L.ToString());
item.SubItems.Add(contractData.TradeP_L.ToString());
item.SubItems.Add(contractData.AdjP_L.ToString());
item.SubItems.Add(contractData.TAdjP_L.ToString());
item.SubItems.Add(contractData.LastPrice.ToString());
item.SubItems.Add(contractData.WrkBuys.ToString());
item.SubItems.Add(contractData.BidQty.ToString());
item.SubItems.Add(contractData.BidPrice.ToString());
item.SubItems.Add(contractData.AskPrice.ToString());
item.SubItems.Add(contractData.AskQty.ToString());
item.SubItems.Add(contractData.WrkSells.ToString());
lstvOutrights.Items.Add(item);


<span style="color:Blue; string[] row = { contractData.Contract_Name.Trim(), String.Format(<span style="color:#A31515; "{0:MM/dd/yyyy}", contractData.ExpirationDt), String.Format(<span style="color:#A31515; "{0:MM/dd/yyyy}", contractData.MeetingDt) };
dgvTest.Rows.Add(row[0]);
}
}
}
}
}
[/code]

<br/>
Here is the calling routine.

<div style="color:Black;background-color:White; <pre>
<span style="color:Green; //called when instrument was updated
<span style="color:Blue; void m_notify_OnNotifyUpdate(TTInstrNotify pNotify, TTInstrObj pInstr)
{
<span style="color:Green; //Change to instrument
<span style="color:Blue; try
{

<span style="color:Blue; string strContract = pInstr.get_Get(<span style="color:#A31515; "Contract").ToString();

<span style="color:Blue; if (m_orderSetFilter != <span style="color:Blue; null)
{
m_orderSetFilter.Close();
TTOrderSelector ordSel = <span style="color:Blue; new TTOrderSelector();
ordSel.AddTest(<span style="color:#A31515; "Contract", strContract);
<span style="color:Green; //ordSel.AddTest("OrdStatus", "OK");
m_orderSetFilter.OrderSelector = ordSel;
m_orderSetFilter.Open(0);

pInstr.OrderSet = m_orderSetFilter;
<span style="color:Green; //cf.UpdateWorkPos(pInstr, ref contractData);
<span style="color:Blue; string ProductType;

ProductType = pInstr.get_Get(<span style="color:#A31515; "ProdType").ToString();
cf.PopulateContractClass(<span style="color:Blue; ref contractData, pInstr);

<span style="color:Blue; if (ProductType == <span style="color:#A31515; "FUTURE")
{
<span style="color:Blue; if (tabContracts.SelectedTab.Text.Trim() == <span style="color:#A31515; "Outrights")
{
lstvOutrights.Items.Clear();
AddToOutrights();
}
}
<span style="color:Blue; else
{
<span style="color:Blue; if (tabContracts.SelectedTab.Text.Trim() == <span style="color:#A31515; "Spreads")
{
lstvSpreads.Items.Clear();
AddToSpreads();
}

}

m_orderSetFilter.Close();
ordSel.Reset();
m_orderSetFilter.OrderSelector = ordSel;
m_orderSetFilter.Open(0);

cf.UpdateNetValueInSpreads(strContract, objDA);

ordSel = <span style="color:Blue; null;
}
}
<span style="color:Blue; catch (System.Exception e)
{
MessageBox.Show(e.Message, <span style="color:#A31515; "Notify Update");
objDA.WriteToErrorLog(e.Message, <span style="color:#A31515; "Notify Update", <span style="color:#A31515; "Contracts");
}
}
[/code]

<br/>
Any ideas or comments would be appreciated.
Thanks
Bob




View the full article
 
Back
Top