栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

c#方法中弹出窗体返回输入值

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c#方法中弹出窗体返回输入值

两种方法

第一种:使用委托,但是需要用到全局变量,不太想用。(有知道不用全局变量的方法请告诉我一下)

第二种:使用Control的Tag属性。

Form_SelectDate form = new Form_SelectDate();
form.TopMost = true;//设置置顶
form.ShowDialog();//只能调用模式对话框
string s = form.Tag.ToString();
form.Dispose();//释放资源,调用ShowDialog后方法关闭不会自动释放资源,Show会释放

最好设置弹窗窗体置顶:TopMost = true;

注意使用:ShowDialog后方法关闭不会自动释放资源,需要执行Dispose();

具体区别:https://www.cnblogs.com/dahloong/p/9139542.html

在C#中窗口的显示有两种方式:模态显示(showdialog)和非模态显示(show)。 二者最常见的区别是:

模态显示后, 弹出窗口阻止调用窗口的所有消息响应。 只有在弹出窗口结束后调用窗口才能继续。
在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值。

非模态显示后, 可以在弹出窗口和调用窗口之间随意切换。 调用窗口调用show方法后,下面的代码可以立即执行。
在非模态窗口关闭后,窗口的所有资源被释放,窗口不存在,无法获取窗口的任何信息。

MSDN上对showdialog的解释:

当窗体显示为模式对话框时,单击“关闭”按钮(窗体右上角带 X 的按钮)会隐藏窗体并将 DialogResult 属性设置为
DialogResult.Cancel。与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult
属性的值时,.NET Framework 不调用 Close
方法。窗体转而可以隐藏并可重新显示,而不用创建该对话框的新实例。因为未关闭显示为对话框的窗体,所以在您的应用程序不再需要该窗体时,必须调用该窗体的
Dispose 方法。

    public static string GetSelectDate()
    {
        Form_SelectDate form = new Form_SelectDate();
        form.Disposed += Disposeds;
        Console.WriteLine("ShowDialog1");
        form.ShowDialog();
        string s = form.Tag.ToString();

        //Console.WriteLine("Show1");
        //form.Show();
        //Console.WriteLine("Show2");
        //form.Show();

        Console.WriteLine("return");
        return s;
    }

        private static void Disposeds(object sender, EventArgs e)
        {
            Console.WriteLine("我被释放了");
        }

输出:

ShowDialog1
return

    public static string GetSelectDate()
    {
        Form_SelectDate form = new Form_SelectDate();
        form.Disposed += Disposeds;
        Console.WriteLine("ShowDialog1");
        form.ShowDialog();
        string s = form.Tag.ToString();

        Console.WriteLine("Show1");
        form.Show();
        Console.WriteLine("Show2");
        form.Show();

        Console.WriteLine("return");
        return s;
    }

    private static void Disposeds(object sender, EventArgs e)
    {
        Console.WriteLine("我被释放了");
    }

输出:

ShowDialog1
Show1
Show2
return
我被释放了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号