c# - DataGridView with ContextMenu assigned to column and a MessageBox -
i have dgv has datasource set bindinglist. there contextmenu assigned column in dgv. there menuitem set on contextmenu calls messagebox on click event.
everything works fine , methods called , messagebox yesno responses susppose to.
the problem having when messagebox's click event occurs (yes or no) it's job , goes away. if same routine called second time, again it's job no problem, reappears. if click yes or no goes away. if call third time messagebox appears again job , reappears twice. if everytime it's being called iterating , calling again amount of times. occur everytime it's called.
the bindinglist built using class nested properties , data elements present.
i tried using blank messagebox no dialogresults , no change. tried using dgv's raiselistchangedevents=false in contextmenu click event , dgv's cell enter click event.
i've stepped through code , and no matter class nested properties gets called , causes contextmenu's click event called again , again... figure design since bindinglist autoupdate when cell's value accessed or changed.
contextmenu's column button , readonly.
so how either catch messagebox after it's run first time or stop bindinglist auto updating. list draws data web reference , handle updates through methods provided api. reason i'm using bindinglist because dgv doesn't work list .
thank or guidance. (first time posting, have gathered , used lot of info here)
here's code:
_requestsview.autogeneratecolumns = false; _edit.datapropertyname = "requestid"; _patient.datapropertyname = "patient"; _datesubmitted.datapropertyname = "date"; _completedby.datapropertyname = "completedby"; _completedon.datapropertyname = "completedon"; _procedure.datapropertyname = "procedure"; _stat.datapropertyname = "stat"; _viewreport.datapropertyname = "viewreport"; _selectedspecialist.datapropertyname = "selectedspecialist"; _status.datapropertyname = "status"; _rate.datapropertyname = "rating"; _requestsview.datasource = _requestsbinding; // _cancelrequest_click contextmenu menuitem void _cancelrequest_click(object sender, eventargs e) { messagebox.show("test"); } private void _requestsview_cellenter(object sender, datagridviewcelleventargs e) { if (_requestsview.currentrow != null) if (_requestsview.currentrow.cells["_viewreport"].selected) try { var requestnumber = (int)_requestsview.currentrow.cells ["_viewreport"].value; var letter = api.client.getcompletedletter(usesession.sessionid, requestnumber); var convertedletter = convert.frombase64string(letter); var requestnumbertostring = convert.tostring(requestnumber); var tmpfile = system.io.path.combine(system.io.path.gettemppath(), requestnumbertostring + @".pdf"); var view = new viewletter(requestnumbertostring, tmpfile); file.writeallbytes(tmpfile, convertedletter); view._pdf.loadfile(tmpfile); view._pdf.performlayout(); view._pdf.refresh(); view._pdf.setshowtoolbar(true); view._pdf.setzoom(100); view.show(); view.activate(); } catch (exception ee) { messagebox.show(ee.message); } if (_requestsview.currentrow != null) if (_requestsview.currentrow.cells["_edit"].selected) _edit.contextmenustrip.show(cursor.position.x, cursor.position.y); if (_requestsview.currentrow != null) if (_requestsview.currentrow.cells["_rate"].selected) _rate.contextmenustrip.show(cursor.position.x, cursor.position.y); } public class requests { private int _requestid; private datetime _date; private string _patient; private string _completedby; private string _completedon; private string _procedure; private string _stat; private int _viewreport; private specialists _selectedspecialist; private string _status; private int _rating; public requests() { } public requests(string stat) { _stat = stat; } public int requestid { { return _requestid; } set { _requestid = value; } } public datetime date { { return _date; } set { _date = value; } } public string patient { { return _patient; } set { _patient = value; } } public string completedby { { return _completedby; } set { _completedby = value; } } public string completedon { { return _completedon; } set { _completedon = value; } } public string procedure { { return _procedure; } set { _procedure = value; } } public string stat { { return _stat; } set { _stat = value; } } public int viewreport { { return _viewreport; } set { _viewreport = value; } } public specialists selectedspecialist { { return _selectedspecialist; } set { _selectedspecialist = value; } } public string status { { return _status; } set { _status = value; } } public int rating { { return _rating; } set { _rating = value; } } }
just wanted update , close it. figured out work around sets boolean true or false during different stages of events being called. if boolean set true return out of methods.
Comments
Post a Comment