Mad*_*Boy 4 c# visual-studio-2010 winforms
我有一些奇怪的问题,WinForm似乎拒绝接近一些奇怪的原因.我有一个非常简单的gui,有时我不会对X做出反应,或者当我在按钮上使用事件时它甚至到达Close()并且什么都不做.
private void buttonZapisz_Click(object sender, EventArgs e) {
string plik = textBoxDokumentDoZaladowania.Text;
if (File.Exists(plik)) {
string extension = Path.GetExtension(plik);
string nazwaPliku = Path.GetFileName(plik);
SqlMethods.databaseFilePut(plik, comboBoxTypDokumentu.Text, textBoxKomentarz.Text, sKlienciID, sPortfelID, extension, nazwaPliku);
Close();
}
}
Run Code Online (Sandbox Code Playgroud)
没有分配给FormClosed或的事件FormClosing.那我该怎么知道出了什么问题呢.有时X会在加载GUI之后工作但是在我按下Button以保存一些东西到数据库后它会在该按钮事件中到达Close()并且它仍然是可见的并且什么都不做.不能使用X,也不能使用ALT + F4.我可以绕过GUI并选择其他值而ComboBox没有问题.
我像这样调用GUI:
private void contextMenuDokumentyDodaj_Click(object sender, EventArgs e) {
var lv = (ListView) contextMenuDokumenty.SourceControl;
string varPortfelID = Locale.ustalDaneListViewKolumny(listViewNumeryUmow, 0);
string varKlienciID = Locale.ustalDaneListViewKolumny(listViewKlienci, 0);
if (lv == listViewDokumentyPerKlient) {
if (varKlienciID != "") {
var dokumenty = new DocumentsGui(varKlienciID);
dokumenty.Show();
dokumenty.FormClosed += varDocumentsGuiKlienci_FormClosed;
}
} else if (lv == listViewDokumentyPerPortfel) {
if (varPortfelID != "" && varKlienciID != "") {
var dokumenty = new DocumentsGui(varKlienciID, varPortfelID);
dokumenty.Show();
dokumenty.FormClosed += varDocumentsGuiPortfele_FormClosed;
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我无法关闭GUI我也可以在没有问题的情况下在主gui上工作.我可以打开相同的GUI,打开新的GUI后我可以快速关闭它.GUI是非常简单的几乎没有ComboBoxes,TextBoxes和一个EditButton从DevExpress的.
编辑: varDocumentsGuiPortfele_FormClosed代码允许我刷新GUI(根据用户现在的位置重新加载ListView).
private void varDocumentsGuiPortfele_FormClosed(object sender, FormClosedEventArgs e) {
TabControl varTabControl = tabControlKlientPortfele;
if (varTabControl.TabPages.IndexOf(tabPageDokumentyPerKlient) == varTabControl.SelectedIndex) {
loadTabControlKlientPortfeleBezZmianyUmowy();
}
}
Run Code Online (Sandbox Code Playgroud)
Han*_*ant 15
将此代码粘贴到表单类中:
protected override void OnFormClosing(FormClosingEventArgs e) {
e.Cancel = false;
base.OnFormClosing(e);
}
Run Code Online (Sandbox Code Playgroud)
当它工作时,您想要找出不希望表单关闭的Validating事件处理程序的原因.
您要验证的下一件事是Debug + Exceptions,勾选CLR Exceptions的Thrown框.这可以确保您不会吞下阻止表单关闭的异常.或者更糟糕的是,吞噬异常的操作系统,一个令人讨厌的Windows 7问题.
| 归档时间: |
|
| 查看次数: |
9840 次 |
| 最近记录: |