标签: formclosing

Vb.net中的Application.Exit()和FormClosing事件

我有一个在系统托盘图标中运行的Windows窗体应用程序.如果用户按下窗口的X按钮,将显示一个消息框,显示是和否(是 - >关闭窗体---否 - >保持窗体运行在系统托盘图标).我正在考虑在用户打开另一个应用程序实例时阻止该场景,因为我已经运行了一个实例,所以我使用了这段代码:

 If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length> 1 Then 
 MessageBox.Show("Another instance is running", "Error Window", MessageBoxButtons.OK,
    MessageBoxIcon.Exclamation)
    Application.Exit()
End If
Run Code Online (Sandbox Code Playgroud)

问题是,当我想测试这个消息时,但是在我按下确定后,会出现一个新的消息框(来自Private Sub Form_FormClosing的消息框).如果我选​​择NO,我将不得不运行实例!我已经读过Application.Exit会触发Form_FormClosing事件.

是否有可能取消触发Form_FormClosing事件,或者我做错了什么?

'这是封闭程序

Private Sub Form_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Try
        Dim response As MsgBoxResult
        response = MsgBox("Are you sure you want to exit", CType(MsgBoxStyle.Question + MsgBoxStyle.YesNo, MsgBoxStyle), "Confirm")

        'If the user press Yes the application wil close
        'because the application remains in taskmanager after closing i decide to kill the current process …
Run Code Online (Sandbox Code Playgroud)

vb.net formclosing

5
推荐指数
1
解决办法
6万
查看次数

如何阻止用户关闭我的C#应用​​程序?

如何在C#中使用unclosed应用程序?我想禁用表单的"X"按钮,并阻止Windows任务管理器关闭它.

我知道阻止表单关闭的一种方法是处理FormClosing事件,但是如何阻止任务管理器关闭它?

.net c# winforms formclosing

4
推荐指数
3
解决办法
2万
查看次数

VB.net等待第二种形式关闭然后继续

在vb.net中有没有办法暂停一个函数\事件并等到另一个表单关闭到contine

例:

    Private Sub B1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B1.Click

label1.text="Hello testing.." '1st function

form2.show() '2nd function

'MAKE FORM WAIT FOR FORM 2 TO CLOSE...
'THEN CONTINUE WITH THE NEXT FUNCTION

msgbox("Some function that was waiting in the event") '3rd function

end sub
Run Code Online (Sandbox Code Playgroud)

我能找到的最接近我想要的是一个输入框,但输入框受限于我想要的,虽然它等待,因为我希望Form2能够运行.

另一个建议是循环,直到form2关闭,但这是一个hacky和unprofesional作为解决方案(我的意见)

vb.net wait formclosing

4
推荐指数
1
解决办法
1万
查看次数

如何使用alt + F4阻止任何Form关闭

这与如何禁用Alt + F4结束表格不重复.请阅读原因.

我在我的主表单下创建了一个自定义MessageBox.

在此输入图像描述

并将"Aight"按钮单击监听器设置为:

private void Aight_buton_Click(object sender, EventArgs e)
{
    dr = DialogResult.OK;
    Close();
}
Run Code Online (Sandbox Code Playgroud)

"X"按钮的情况也是如此.按照上面的问题回答我可以做到这一点:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = e.CloseReason == CloseReason.UserClosing;
}
Run Code Online (Sandbox Code Playgroud)

但是因为我Close()Aight_buton_Click它下面使用它仍然注册为e.CloseReason == CloseReason.UserClosing;.所以按键不会关闭我的表单(自定义消息框)也不会Alt+ F4.我想知道具体如何我只能阻止Alt+ F4关闭而不是Close()关闭.请不要使用,ModifierKeys因为它不是最合适的,也不是处理这种情况的最聪明的方法.

.net c# messagebox winforms formclosing

4
推荐指数
2
解决办法
303
查看次数

如何防止在FormClosing事件中关闭和处置winform?

这个问题可能看似重复,但我在测试程序时遇到了这个问题,我对你如何解决它感到困惑.

我有一个winform,它有一个表单结束事件.在这种情况下,我弹出一个消息框,询问用户"你确定要关闭窗口吗?" 如果他们按下"是"按钮,应用程序将关闭窗口并阻止其按预期处理.所以,我可以再打开它.但是,如果他们没有按下任何按钮,它仍会关闭窗口,但现在窗户已被丢弃.因此,当我尝试再次打开它时,它引发了一个异常,"无法访问已处置的对象".当没有按下按钮时,我希望winform保持打开状态而不是处理掉.

这是我的代码:

method PPMain.PPMain_FormClosing(sender: System.Object; e: System.Windows.Forms.FormClosingEventArgs);
begin
       if MessageBox.Show('Are you sure you want to close the window?','PPMain',MessageBoxButtons.YesNo) = DialogResult.Yes then
       begin
             e.Cancel := true; 
             Hide; 
       end
       else
             e.Cancel := false;
end;
Run Code Online (Sandbox Code Playgroud)

我想,因为你必须设置e.Cancel = true来关闭窗口并告诉它隐藏,做相反的事情(e.Cancel = false并且没有隐藏)将阻止winform关闭和被处理.

你是如何解决这个问题的?

预先感谢,

.net oxygene delphi-prism winforms formclosing

3
推荐指数
1
解决办法
4857
查看次数

当另一个表单关闭时运行一些代码

我有一个带有ID Form1的winform,在这个表单中我使用ID Form2创建另一个表单的新对象并显示它:

Form1中的代码:

Form2 f2 = new Form2();
f2.show();
Run Code Online (Sandbox Code Playgroud)

我想在用户f2关闭时在Form1中运行一些代码:

请帮我.

c# winforms formclosing

3
推荐指数
1
解决办法
81
查看次数

如何在C#中取消挂钩事件处理程序

我正在研究具有多种形式的C#应用​​程序.
当我打开其中一个表单时,我添加了一个这样的事件监听器:SomeClass.MotionCompleted += new EventHandler(HandlerMethod);.MotionCompleted事件是一个静态事件.

我注意到,在关闭此表单后,HandlerMethod仍会在事件发生时被调用,然后导致异常,因为它试图更新表单上不再存在的内容.

eventlistener如何存在并响应事件,即使表单不再存在?一旦调用了form.Close()或this.Close(),就不应该自动取消挂钩事件列表器,以便它们不再被调用?

c# event-handling winforms formclosing

2
推荐指数
1
解决办法
1683
查看次数

如果隐藏表单有未保存的更改,则c#取消关闭应用程序

搜索谷歌和stackoverflow之后我无法找到一个帮助我在我的情况下的答案.我有一个带有开始菜单(表单)的应用程序.当用户按下(任意)表格的X(关闭)时,我重新加载开始菜单.现在,当(菜单)表单关闭时,我想检查并通知用户现在任何隐藏的表单处于编辑模式(有或没有未保存的更改),如果用户按下取消我想显示该表单并停止应用程序关闭.现在我的问题是如何阻止应用程序停止在其他表单的代码中.我有一个覆盖调用this.close的子窗体的dispose方法,所以ok/cancel消息框显示但是在MB之后,开始菜单关闭,无论如何停止程序.我应该寻找一种处理这些东西的不同方法,还是要修改方法或事件处理程序,以便这个/ \可以工作?

编辑:确定这里的代码部分是被调用的顺序.我哪里出错了?

private void Menu_FormClosing(object sender, FormClosingEventArgs e)
    {
       Global.Forms.Remove(this);
        if (!Global.Clean_Forms())
        {
            e.Cancel = true;
            Global.Forms.Add(this);
        }
    }

public static void Clean_Forms()
    {


        foreach (Form f in Forms)
            {
                if (f is Menu)
                {
                    //do nothing
                }
                else
                {
                    if (!f.IsDisposed)
                    {


                        f.Close();
                    }

                }

            }
        if (Forms.Count != 0)
        {
            isClean = false;
           /* String a = "";
            foreach (Form f in Forms)
            {
                a += f.ToString() + ": ";
            }
            MessageBox.Show(a);*/
        }
        else
        {
            isClean = …
Run Code Online (Sandbox Code Playgroud)

.net c# forms winforms formclosing

2
推荐指数
1
解决办法
2474
查看次数

单击角落中的Big Red X时未调用FormClosing

我找到了这个:

在窗体的右上角有一个带X的按钮,如何抓住这个事件@ C#

其中说我应该使用FormClosing事件找出窗口因为点击X而关闭的时间.

但我的事件代码永远不会被调用:

private void MainWin_FormClosing(Object sender, FormClosingEventArgs e)
{
    m_closeThread = true;
    Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)

我必须遗漏一些基本的东西,但我不知道是什么.

c# winforms formclosing

2
推荐指数
1
解决办法
7376
查看次数

如何从 WPF 用户控件获取托管 WinForm 的实例?

我有一个 WPF UserControl,它托管在 WPF 窗口或 Windows Forms 中Form。当用户按下“X”按钮关闭托管窗口/表单时,我想捕获此关闭事件并执行一些操作。

为此,我订阅了加载事件以UserControl获取托管窗口/表单实例并订阅其关闭事件。

它在 WPF 窗口中工作正常,但当我尝试对 执行相同操作时Form,出现错误并且无法继续。

WPFUsercontrol.xaml.cs

private void WpfUsercontrol_OnLoaded(object sender, RoutedEventArgs e)
{
    Window window = Window.GetWindow(this);
    if (window != null)
        window.Closing += window_closing;

    Form form = this.Parent as Form;    
    //Error: Cannot convert from System.Windows.DependencyObject to System.Windows.Forms.Form    
}
Run Code Online (Sandbox Code Playgroud)

如何实现Form与使用 WPF 窗口相同的关闭 a 的功能?

c# wpf winforms formclosing

2
推荐指数
1
解决办法
1299
查看次数