当前位置: 首页 > 编程语言 > C#

WinFormsformwon'tclosewhenpressingXorClose()inC#Share

时间:2023-04-10 22:12:50 C#

WinFormsformwon'tclosureswhenpressingXorClose()inC#出于某种奇怪的原因。我有一个非常简单的gui,有时我对X没有反应,或者当我在按钮上使用事件时它甚至到达Close()并且什么都不做..privatevoidbuttonZapisz_Click(objectsender,EventArgse){stringplik=textBoxDokumentDoZaladowania.Text;如果(File.Exists(plik)){字符串扩展名=Path.GetExtension(plik);stringnazwaPliku=Path.GetFileName(plik);SqlMethods.databaseFilePut(plik,comboBoxTypDokumentu.Text,textBoxKomentarz.Text,sKlienciID,sPortfelID,extension,nazwaPliku);关闭();没有为FormClosed或FormClosing分配事件。那我怎么知道出了什么问题。有时X在加载GUI后工作,但在我按下按钮将某些内容保存到数据库后,它会在该按钮事件中点击Close()并且它保持可见并且不执行任何操作。不能使用X,也不能使用ALT+F4。我可以绕过GUI并为ComboBox选择其他值而不会出现问题。我这样称呼GUI:privatevoidcontextMenuDokumentyDodaj_Click(objectsender,EventArgse){varlv=(ListView)contextMenuDokumenty.SourceControl;字符串varPortfelID=Locale.ustalDaneListViewKolumny(listViewNumeryUmow,0);字符串varKlienciID=Locale.ustalDaneListViewKolumny(listViewNumeryUmow,0);;if(lv==listViewDokumentyPerKlient){if(varKlienciID!=""){vardokumenty=newDocumentsGui(varKlienciID);文档.Show();dokumenty.FormClosed+=varDocumentsGuiKlienci_FormClosed;}}elseifPerPort(lv==ylistViewDokument){if(varPortfelID!=""&&varKlienciID!=""){vardokumenty=newDocumentsGui(varKlienciID,varPortfelID);文档.Show();dokumenty.FormClosed+=varDocumentsGuiPortfele_FormClosed;虽然我无法关闭GUI,但我可以在主gui上正常工作。我可以打开同一个GUI,打开新的GUI后我可以快速关闭它。GUI很简单,很少有ComboBoxes、TextBoxes和EditButton,只有一个EditButton。编辑:varDocumentsGuiPortfele_FormClosed代码允许我刷新GUI(根据用户现在所在的位置重新加载ListView)。privatevoidvarDocumentsGuiPortfele_FormClosed(objectsender,FormClosedEventArgse){TabControlvarTabControl=tabControlKlientPortfele;如果(varTabControl.TabPages.IndexOf(tabPageDokumentyPerKlient)==varTabControl.SelectedIndex){loadTabControlKlientPortfeleBezZmianyUmowy();}}将此代码粘贴到表格类中:protectedoverridevoidOnFormClosing(FormClosingEventArgse){e.Cancel=false;base.OnFormClosing(e);}当它工作时,您想找出为什么您不想关闭表单的验证事件处理程序。接下来要验证的是Debug+Exceptions,勾选CLRExceptions的Thrown框。这确保您不会吞下阻止表单关闭的异常。或者更糟的是,Exception-eatingOS,一个讨厌的Windows7问题。如果在close方法中出现异常,则永远不会调用Baseclose方法。Try{}catch{}aroundeverything以上是C#学习教程:C#中按X或Close()时,WinForms窗体不会关闭分享的全部内容,如果对大家有用还需要了解更多关于C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: