多窗体,菜单工具栏

多窗体

主窗体不关程序无法退出。

主要有4点

1、哪个是主窗体

Form2 f2 = new Form2();
f2.Show();
this.Hide();

打开form2窗口,隐藏form1窗口

问题:主窗体隐藏了,关闭其它窗体后,没有将主窗体显示/关闭,那么程序就关不上了

构造函数传值,将窗体传到另一个窗体中去

2、

2、窗体只能打开一个

创建一个全局的泛型集合,为了放置全部打开的窗体
1、在窗体打开之前,判断集合中是否有name一致的窗体,如果有就说明已经打开了,就不要再打开了

bool has = false;
            Form2 f2 = new Form2();
            foreach (Form F in Flist)
            {
                if (F.Name == f2.Name)
                {
                    has = true;
                }
            }
            if (has)
            {

            }
            else
            {
                Flist.Add(f2);
                f2.Show();
            }

问题:当窗体打开了,关闭后,就无法再次打开了
办法:当窗体关闭时,清除Form1中集合中的此窗体对象记录

form1:
   public void DelectForm(Form F)
        {
            Flist.Remove(F);//移除
        }

form2:
 public partial class Form2 : Form
    {
        Form1 F1 = null;
        public Form2( Form1 f1)
        {

            InitializeComponent();
            F1 = f1;
        }

 private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (F1 != null)
            {
                F1.DelectForm(this);
            }
        }

问题:当窗体已经打开,再次点击打开按钮,不会将已打开的窗体重新显示并焦点进入
办法:
找到已打开对象,将WindowState属性设置为:
找到已打开窗体的对象,使用Focus方法;

F.Focus
最小化,也弹出, 焦点进入

 F.WindowState = FormWindowState.Normal;

3、窗体之间的传值和控制

传值:构造函数传值

控制:第一步,找到窗体对象,第二步,将窗体对象的控件值更改
注意:要将窗体中的对象访问权限修改public

form1:
 private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "liuxin" && textBox2.Text == "1234")
            {
                Form2 f2 = new Form2(this,textBox1.Text );

                f2.Show();
                this.Hide();

form2:
public partial class Form2 : Form
    {
        Form1 F1 = null;
        public Form2(Form1 f1,string Uname)
        {
            InitializeComponent();
            F1 = f1;
            label1.Text = "欢迎回来"+Uname;
        }
    }

4、提示框类型的窗体

ShowDialog();

 Form2 f2 = new Form2(this,textBox1.Text);
            f2.ShowDialog();

菜单和工具栏:

1、MenuStrip:
顶部菜单
分割线:1、- 2、右键插入 split。。。

快捷键:每一个项右键属性的最下面可以设置快捷键
不管选项隐藏还是菜单隐藏,快捷键都管用

2、ContextMenuStrip:
右键菜单

3、StatusStript:
底部菜单

4、ToolStrip
工具条

5、ToolStripContainer
工具条容器

作用:将窗体显示为模式对话框。 在调用Form.ShowDialog方法后,直到关闭对话框后,才执行此方法后面的代码

时间: 2024-10-14 19:50:27

多窗体,菜单工具栏的相关文章

xtraTabbedMdiManager的标题上右鍵弹出关闭窗体菜单

实现一个增值功能, 在xtraTabbedMdiManager组件TabPage标题上右鍵弹出关闭当前窗体的菜单. C# Code:private void xtraTabbedMdiManager1_MouseUp(object sender, MouseEventArgs e){   //点左键无效, 必须是点右键弹出菜单   if (e.Button != MouseButtons.Right) return;      BaseTabHitInfo hint = xtraTabbedMd

顶部可以折叠的菜单工具栏

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>可以折叠的菜单工具栏</title>

0922 多窗体,菜单和工具栏

多窗体 这里所谓的多窗体就是我们所说的打开一个窗体后,从这个窗体打开另一个窗体,打开的窗体只能打开一个,当再次点击时会把焦点移入打开的新窗体 1.   首先我们先定义一个泛型集合来存放打开的窗体,来判断是否打开过这个窗体 List<Form> Flist = new List<Form>(); 2.在主窗体的按钮上写方法 bool has = false;//用来判断是否打开过第二个窗体 Form2 f2 = new Form2(this);//将这个窗体传入第二个窗体实现第二窗体

C#多窗体和菜单工具栏

多窗体: 1.哪个是主窗体 问题:主窗体隐藏了,关闭其它窗体后,没有将主窗体显示/关闭,那么程序就关不上了 (1).构造函数传值,将窗体传到另一个窗体中去 2.窗体只能打开一个 创建一个全局的泛型集合,为了放置全部打开的窗体 (1).在窗体打开之前,判断集合中是否有name一致的窗体,如果有就说明已经打开了,就不要再打开了 问题:当窗体打开了,关闭后,就无法再次打开了  办法:当窗体关闭时,清除Form1中集合中的此窗体对象记录  问题:当窗体已经打开,再次点击打开按钮,不会将已打开的窗体重新显

MFC之窗体改动工具栏编程状态栏编程程序启动画面

1窗体外观的改动 (1)改动在CMainFrame::preCreateWindow(CREATESTRUCT& cs) 改动标题:cs.style&=FWS_ADDTOTITLE; cs.lpszNamw="new title"; (2)窗体创建之后改动外观 在CMainframe::Create()中调用SetWindowLong(HWND hwnd,.....)依据參数改动指定的项 全部从CWnd派生的类都是窗体类在这些窗体类中都有一个公有的成员变量保存了和着个窗

Pyqt4学习笔记-菜单工具栏

显示状态栏: #!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore class MainWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.resize(250, 150) self.setWindowTitle('Mainwindow') self.statusB

在插件式应用程序中,实现对菜单,工具栏按钮的 完全解耦及状态控制

之前承诺会对 Winform IDE,WPF 客服程序的开发进行进一步的分解记录,很抱歉一直没有太多时间认真梳理. 本篇博客抽取了这两个应用程序的一个共通功能的实现方法进行说明,即在插件式应用程序中,对菜单及工具栏的控制. 对于复杂的应用程序开发,我们可能会将程序的功能进行分解,模块化,插件化:那么如何在应用程序的宿主中,向插件提供统一的菜单,工具栏注册,更新,销毁机制呢?以及如何做到UI无关的彻底解耦合? 看两个例子: 基于 Winform 的插件式应用程序: http://www.cnblo

WIndowsForm 公共控件 菜单和工具栏

                                                  公共控件   菜单栏 状态栏   布局    公共控件 textbox:  text属性:用于获取或设置文本框的文本 一般情况下,几乎所有的控件里的属性,都具备获取或设置两个功能 passwordchar:替换字符实现密码隐藏的效果 comboBox:  属性SelectedIndex = 0; 用于获取或设置选中项的索引 selectedText:获取或设置选中项的文本 selectedItem

父窗体与子窗体的右键菜单合并(子窗体最大化后)

1 private void 打开子窗体ToolStripMenuItem_Click(object sender, EventArgs e) 2 { 3 Form2 f = new Form2();//创建窗体对象 4 f.MdiParent = this;//设置父窗体属性 5 f.Show();//显示窗体 6 f.Resize += //为窗体添加事件 7 new EventHandler(f_Resize); 8 } 9 10 void f_Resize(object sender,