精华内容
下载资源
问答
  • 这篇文章主要介绍了C# Winform实现主窗口打开登录窗口关闭的方法,这需要用户名密码的软件项目是必用的一个技巧,要的朋友可以参考下 使用C#进行Winform编程时,我们经常需要使用一个登录框来进行登录...
    这篇文章主要介绍了C# Winform中实现主窗口打开登录窗口关闭的方法,这在需要用户名密码的软件项目中是必用的一个技巧,要的朋友可以参考下

    在使用C#进行Winform编程时,我们经常需要使用一个登录框来进行登录,一旦输入的用户名密码登录成功,这时登录窗口应该关闭,而且同时打开主程序窗口。该如何来实现呢?

    乍一想,很简单啊,打开主窗口就用主窗口的Show()方法,而关闭登录窗口就用登录窗口的Close()方法即可。即代码如下:

    Program.cs中代码:

    复制代码 代码如下:

    Application.Run(new FormLogin());

    登录窗口(FormLogin)代码:
    复制代码 代码如下:

    private void button1_Click(object sender, EventArgs e)
    {
    if (textBox1.Text == "a") { //验证用户名密码

    FormMain fm = New FormMain();
    fm.Show(); //打开主窗口
    this.Close(); //关闭登录窗口
    }
    }


    事实证明,这种办法是行不通的。因为主窗口是由登录窗口打开的,所以我们在关闭登录窗口时,主窗口也会被一起关闭。这是一个线程树,或者窗口树的关系,即一个窗口关闭时,由它打开的新窗口都将被关闭。

    那么应该怎么解决呢?经过小编鉴定,网上有这样一种解决办法是很不错的。

    Program.cs中代码:

    复制代码 代码如下:

    FormLogin fl = new FormLogin();
    fl.ShowDialog();
    if (fl.DialogResult == DialogResult.OK)
    {
    Application.Run(new FormMain());
    }
    else
    {
    return;
    }

    即先将登录窗口作为一个对话框打开,如果这个对话框返回一个DialogResult.OK的值,那么就表示登录验证成功了,于是打开主窗体。如果验证失败,则程序结束、退出。

    在登录窗体(FormLoin)中代码:

    复制代码 代码如下:

    private void button1_Click(object sender, EventArgs e)
    {
    if (textBox1.Text == "aaa") { //验证用户名密码成功
    this.DialogResult = DialogResult.OK; //返回一个登录成功的对话框状态
    this.Close(); //关闭登录窗口
    }
    }

    这个方法不错,大家可以试试。

    关于Winform如何实现主窗口打开时登录窗口关闭,本文就介绍这么多,希望对您有所帮助,谢谢!

    展开全文
  • 用PyQt5实现从主窗口打开子窗口并进行窗口间数据传递的方法 Qt Designer设计主窗口和子窗口界面,如下图所示 将窗口文件编译成.py文件,单独编写主调用程序,实现界面与逻辑业务的分离。主调用程序代码如下: ...

    在Qt Designer中设计主窗口和子窗口界面,如下图所示
    主窗口界面
    子窗口界面
    将窗口文件编译成.py文件,单独编写主调用程序,实现界面与逻辑业务的分离。主调用程序代码如下:

    import sys
    from PyQt5 import QtCore
    from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidgetItem
    from MainWinTest import Ui_MainWindow
    from ChildWinTest import Ui_Dialog
    
    class MainWindow(QMainWindow, Ui_MainWindow):
        def __init__(self):
            super(MainWindow, self).__init__()
            self.setupUi(self)
            self.pushButton.clicked.connect(self.onClicked)
            #一定要在主窗口类的初始化函数中对子窗口进行实例化,如果在其他函数中实例化子窗口
            #可能会出现子窗口闪退的问题
            self.ChildDialog = ChildWin()
    
        def onClicked(self):
            # print('打开子窗口!')
            self.ChildDialog.show()
            #连接信号
            self.ChildDialog._signal.connect(self.getData)
    
    
        def getData(self, parameter):
            # print('This is a test.')
            #print(parameter)
            self.lineEdit.setText(parameter)
    
    
    class ChildWin(QMainWindow, Ui_Dialog):
        #定义信号
        _signal = QtCore.pyqtSignal(str)
        def __init__(self):
            super(ChildWin, self).__init__()
            self.setupUi(self)
            self.retranslateUi(self)
            self.pushButton.clicked.connect(self.slot1)
    
        def slot1(self):
            data_str = self.lineEdit.text()
            #发送信号
            self._signal.emit(data_str)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        MainWindow = MainWindow()
        ChildWindow = ChildWin()
        MainWindow.show()
        sys.exit(app.exec_())
    

    运行的效果如下图:
    程序运行效果

    展开全文
  • 本文转载:http://jinyan798.iteye.com/blog/546369  项目用到了一个java类main方法中调用另一个类main方法来解决java1.2不能使用Axis的问题。网上查了查发现还真能调用。这用到了java的反射机制。

       本文转载:http://jinyan798.iteye.com/blog/546369

     在项目中用到了在一个java类main方法中调用另一个类中的main方法来解决java1.2不能使用Axis的问题。在网上查了查发现还真能调用。这用到了java的反射机制。

          下面直接写例子吧:

    这个类是被调用的main方法类:

    Java代码 public class Run {   
    1.     public static void main(String[] args) {   
    2.         String str=args[0]+"Hello World";   
    3.         System.out.println(str);   
    4.     }   
    5. }  
    public class Run {
    	public static void main(String[] args) {
    		String str=args[0]+"Hello World";
    		System.out.println(str);
    	}
    }

     

    下面是调用main方法的类:

    Java代码 public class JobRun {   
    1.     public static void main(String[] args) {   
    2.         String idStr = "YAya";   
    3.             try {   
    4.                 Method method = Run.class.getMethod("main",   
    5. String[].class);   
    6.                 method.invoke(null,   
    7.                         (Object) new String[] { idStr });   
    8.             } catch (Exception e) {   
    9.                 e.printStackTrace();   
    10.             }   
    11.     }   
    12. }  
    public class JobRun {
    	public static void main(String[] args) {
    		String idStr = "YAya";
    			try {
    				Method method = Run.class.getMethod("main",
    String[].class);
    				method.invoke(null,
    						(Object) new String[] { idStr });
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    	}
    }

     

        在写程序时,调用Method类的方法invoke(Object,Object)时老是报参数类型不匹配。我是这样写的method.invoke(Run.class.newInstance(),(Object) new String[]{idStr});错就错在main方法是类Run的静态方法,调用时是不需要对象实例的。

         还有一个兼容问题:

     

              method.invoke(null, new String[]{"ma","xiao"}); //★这思想是对的,但是版本问题,不允许了
    		
    		//现在对了,然后还报 wrong number of arguments,下面详细说明
    		//::
    		//现在说参数的个数不对
    		//我要的方法我已经说了,它需要一个参数,那个参数是一个数组
    		//如果按照1.5的语法,是没有问题的
    		//但是SUN必须要考虑到老版本,
    		//老版本的语法,很多的时候拿到一个数组时,它会迈力的给你一个一个拆开
    		//而JVM又是按照老版本的方法执行的,
    		//所以这里我传的new String[]{"ma","xiao"}被它拆成两个参数了
    		//所以如果我只传一个,new String[]{"ma"},还是拆,说argument type mismatch,
    		//当然,需要的是数组,你给个字串当然 argument type mismatch
    		
    		//怎么办,你既然要拆,那我最多再给你包一层,让你去拆吧
    		method.invoke(null, new Object[]{new String[]{"ma","xiao"}});
    		//这样,JVM一拆,拆出的一个数组,正是我想要的效果 run OK!
    		
    		//还有一个方法
    		method.invoke(null, (Object)new String[]{"hello","world"});
    		//强制转成一个 Object 1.4不是看见数组参数就拆么?[数组的引用应该是不会拆的]
    		//现在 JVM看不见数组了,不拆了,run OK!
    

          就这么多了,希望对大家有帮助

    展开全文
  • PyQt5在主窗口打开子窗口

    万次阅读 多人点赞 2018-02-23 21:38:15
    将其拖入主窗口中,向里面加入一个Lable,然后同样位置放置一个同样大小的Widget,效果如下: 转换后代码为: # -*- coding: utf-8 -*- # Form implementation generated from reading ui file '...

    **2019/7/25 更正

    1.使用Qt Designer中的Widget

    将其拖入主窗口中,向里面加入一个Lable,然后在同样位置在放置一个同样大小的Widget,效果如下:

     

    转换后代码为:

    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'untitled.ui'
    #
    # Created by: PyQt5 UI code generator 5.12.3
    #
    # WARNING! All changes made in this file will be lost!
    
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(350, 250)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.xianjian_widget = QtWidgets.QWidget(self.centralwidget)
            self.xianjian_widget.setGeometry(QtCore.QRect(0, 0, 300, 200))
            self.xianjian_widget.setObjectName("xianjian_widget")
            self.label = QtWidgets.QLabel(self.xianjian_widget)
            self.label.setGeometry(QtCore.QRect(70, 70, 91, 16))
            self.label.setObjectName("label")
            self.qixia_widget = QtWidgets.QWidget(self.centralwidget)
            self.qixia_widget.setGeometry(QtCore.QRect(0, 0, 300, 200))
            self.qixia_widget.setObjectName("qixia_widget")
            self.label_2 = QtWidgets.QLabel(self.qixia_widget)
            self.label_2.setGeometry(QtCore.QRect(110, 60, 54, 12))
            self.label_2.setObjectName("label_2")
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 350, 23))
            self.menubar.setObjectName("menubar")
            self.menu = QtWidgets.QMenu(self.menubar)
            self.menu.setObjectName("menu")
            MainWindow.setMenuBar(self.menubar)
            self.actionXian = QtWidgets.QAction(MainWindow)
            self.actionXian.setObjectName("actionXian")
            self.actionQi = QtWidgets.QAction(MainWindow)
            self.actionQi.setObjectName("actionQi")
            self.menu.addAction(self.actionXian)
            self.menu.addAction(self.actionQi)
            self.menubar.addAction(self.menu.menuAction())
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
            self.label.setText(_translate("MainWindow", "仙剑窗口"))
            self.label_2.setText(_translate("MainWindow", "奇侠窗口"))
            self.menu.setTitle(_translate("MainWindow", "仙剑奇侠"))
            self.actionXian.setText(_translate("MainWindow", "Xian"))
            self.actionQi.setText(_translate("MainWindow", "Qi"))
    

    2.创建**.py

    # -*- coding: utf-8 -*- 
    # Time : 2019/7/25 11:37 
    # Author : hubozhi
    from PyQt5.QtWidgets import QMainWindow, QApplication
    from PyQt5.QtCore import QThread,Qt,QPoint
    from PyQt5.QtGui import QMouseEvent
    from untitled import Ui_MainWindow
    import sys,redis,os
    
    class Main(QMainWindow, Ui_MainWindow):
        def __init__(self):
            super(Main, self).__init__()
            self.setupUi(self)
            # 首先隐藏所有widget
            self.xianjian_widget.hide()
            self.qixia_widget.hide()
            self.actionXian.triggered.connect(self.openXianjian)
            self.actionQi.triggered.connect(self.openQixia)
    
        def openXianjian(self):
            self.qixia_widget.hide()
            self.xianjian_widget.show()
    
        def openQixia(self):
            self.xianjian_widget.hide()
            self.qixia_widget.show()
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        Main = Main()
        Main.show()
        sys.exit(app.exec_())
        pass

    3.在主窗口里有两个选项(“Xian”和“Qi”)与两个子窗口关联

    4.“Xian”打开

     

    5.“Qi”打开

     

    ###############################################

    小技巧

    发现出现了两个底边那个东西

    在由窗口文件生成的.py文件中找到如下代码

            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)

    或者在Qt Designer设计时找到

    删掉任意一个就OK了

    展开全文
  • Main Window and Related Classes QAction 动作类,用于当做一个菜单项或工具项插入菜单或工具栏 QActionGroup 动作组,用于管理多个动作,设置它们之间的互斥性等 ...
  • WPF 登录窗口关闭时打开主窗口

    千次阅读 2015-11-20 13:44:18
    WPF设计登录窗口关闭时打开主窗口,自动生成的App.xaml不能满足要求, 1、把App.xaml的属性窗口的生成操作设定为 无 2、添加Program类 static class Program { /// /// The main entry point for...
  • 因为主窗口是由登录窗口打开的,所欲我们关闭登录窗口时,主窗口也会被一起关闭。 还有会想到让登录窗口隐藏起来使用 this.Close(); 但是这会使得这个程序无法从任务栏关闭,只有从任务管理器关闭。非常的不便利...
  • PyQt5主窗口动态加载Widget实例代码

    千次阅读 2019-06-29 21:59:53
    PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。...我们在主窗口的空白中央添加一个栅格布局并命名为MaingridLayout,等会需要将ChildrenForm放进去。 编写...
  • C#隐藏主窗口的几种方法

    万次阅读 2006-08-10 16:21:00
    但是偶然发现尽管这样的方法可以使主窗口隐藏不见,但是用Alt+Tab的时候却可以看见这个程序的图标并把这个窗口显示出来。因此这种方法其实并不能满足要求。经过研究,又找到两个方法方法一: 重写set
  • .net强制退出主窗口方法

    千次阅读 2009-01-28 20:27:00
    .net强制退出主窗口方法 ——Application.Exit()方法和Environment.Exit(0)方法 .net类库已经帮助我们实现了窗口...系统主窗口,实质上是Main函数开始消息循环的窗口,这个消息循环结束后,Main函数就基本上完成了
  • 本例给出了三种窗口打开方式。 其中界面打开主界面的方式,比较实用,却少有示例。特发布于此,希望对大家有帮助。 一.界面打开 新的界面二.界面打开 对话框三.界面打开 提示框 【如下代码,完全复制...
  • 系统主窗口,实质上是Main函数开始消息循环的窗口,这个消息循环结束后,Main函数就基本上完成了历史使命,整个应用程序自然就结束了。 Application.Exit()方法是终止所有线程上的消息循环,一般情况下,
  • DLL获取进程窗口句柄

    千次阅读 2016-08-18 13:31:39
    有的时候难免需要DLL获取进程的窗口句柄,比如DLL注入的时候等等。那么如何DLL获取进程的窗口句柄呢?可以通过EnumWindows来实现。先通过GetCurrentProcessId获取进程的PID,然后EnumWindows调用G
  • .net强制退出主窗口方法——Application.Exit()方法和Environment.Exit(0)方法 .net类库已经帮助我们实现了...系统主窗口,实质上是Main函数开始消息循环的窗口,这个消息循环结束后,Main函数就基本上完成了历史使
  • [PYQT5] 主窗口弹出子窗口

    千次阅读 多人点赞 2020-01-19 15:17:29
    在主窗口添加按钮,并把按钮信号关联槽,槽函数创建子窗口对象赋值到普通变量,并调用其show 方法。 from PyQt5.QtWidgets import * import sys class Main(QMainWindow): def __init__(self): su...
  • c#一个窗口中打开另一个窗口

    万次阅读 2018-06-28 18:02:53
    1、今天功能需要,打开新的窗口,这里简单记录下 2、实现机制,在主程序打开第一个窗口第一个窗口里面写入触发事件,打开... 在主程序默认打开setParams窗口  Application.EnableVisualStyles();  Appli...
  • WPF主窗口打开子窗口只显示1个办法

    千次阅读 2019-08-31 16:45:59
    直接上代码 private void BtnOpen_Click(object sender, RoutedEventArgs e) { var title = "清单"; //关键所在 var frmitemSearch = Application.Current.Windows.OfTyp...
  • 就是一个无边框的主窗口,生成一个Dialog子窗口后,子窗口关闭主窗口也跟着关闭。代码结构如下: import sys from PyQt5 import QtWidgets, QtCore class Window(QtWidgets.QWidget): def __init__(self): super...
  • 转换成两个py文件,对于两个分开的文件实现子窗口的调用,我看了一些资料,基本都是新建一个文件然后实现显示主窗口以及调用子窗口,不是我想要的,所以下面给出我的实现方法,就在主窗口一个文件实现。...
  • 学习登录窗口与主窗口的运行流程

    千次阅读 2015-01-24 23:40:40
    总结下互相学习用: 显示登录窗口—》判断...1、在Main中修改部分代码如下:其中FrmUserLogin为登录窗口;FrmMain为主窗口; 过程:先显示登录窗口,根据登录窗口返回的result判断成功与否,成功显示主窗口,否则关闭
  • pyqt5 弹窗,弹出自定义窗口1.需求分析2.简单的单击显示窗体3.线程显示弹出窗体,不会卡死 1.需求分析 用pyqt5做UI项目时,有...这里的思路是,先实例化一个窗体A,然后再实例化一个窗体B,然后再窗体Asho
  • :.net强制退出主窗口方法

    千次阅读 2014-05-09 12:12:20
    系统主窗口,实质上是Main函数开始消息循环的窗口,这个消息循环结束后,Main函数就基本上完成了历史使命,整个应用程序自然就结束了。 Application.Exit()方法是终止所有线程上的消息循环,一般情
  • //窗口中的合适位置写这些代码 NewForm fm=new NewForm() //新建一个NewForm窗口(NewForm是自己定义的Form) this.Hide(); //隐藏现在这个窗口  fm.Show();//新窗口显现 这种方法旧的窗口依旧会占...
  • 第一步:先右键删除左侧项目导航栏main.storyboard文件 第二步:删除了story之后此时若直接运行项目,结果会报错 错误信息 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,623
精华内容 24,649
关键字:

在main方法中打开主窗口的代码