多窗体,构造函数传值,打开唯一窗体的办法/菜单 工具栏_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 多窗体,构造函数传值,打开唯一窗体的办法/菜单 工具栏

多窗体,构造函数传值,打开唯一窗体的办法/菜单 工具栏

 2016/9/23 5:34:25  涤荡轮回  程序员俱乐部  我要评论(0)
  • 摘要:多窗体:1、哪个是主窗体问题:主窗体隐藏了,关闭其它窗体后,没有将主窗体显示/关闭,那么程序就关不上了Form2:---Form1F1=null;publicForm2(Form1f1){InitializeComponent();F1=f1;}Form1:---Form2f2=newForm2(this);f2.Show();this.Hide();点击1登录到2,1消失。关闭2,1、2都消失1、构造函数传值,将窗体传到另一个窗体中去用Form2窗体属性里的Fromclosing双击进去F1
  • 标签:构造函数 函数 构造 工具 菜单
多窗体:
1、哪个是主窗体
问题:主窗体隐藏了,关闭其它窗体后,没有将主窗体显示/关闭,那么程序就关不上了




 Form2:---
Form1 F1 = null;
        public Form2(Form1 f1)
        {
            InitializeComponent();

            F1 = f1;
        }

Form1:---
            Form2 f2 = new Form2(this);
            f2.Show();
            this.Hide();

点击1登录到2 ,1消失 。 关闭2,  12 都消失


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

     用Form2 窗体属性里的 Fromclosing  双击进去  F1.Close(); 关闭主窗体F1

     窗体属于顶级控件,不能被放在其他容器里




2、窗体只能打开一个

    创建一个全局泛型集合,为了放置全部打开的窗体

         List<Form> Flist = new List<Form>();

    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属性设置为:Normal
    找到已打开窗体的对象,使用Focus方法;F.Focus

       最小化,也弹出, 焦点进入

      F.WindowState = FormWindowState.Normal;






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

传值:构造函数传值


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;
        }
    }


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

 访问权限修改为 public

  F1.button1.Text = textBox1.Text;


4、提示框类型的窗体

ShowDialog();

作用:点开第二个窗体 不关闭 不能点上一个窗体


 Form2 f2 = new Form2(this,"111");
            f2.ShowDialog();



TabIndex 更改数字 按数字大小 依次用tab 往下走
TabStop  到某个上面停止
 窗体--
   杂项--
    Acc.....Button  -- 选择按钮 用回车启动
    Can.....Button  -- esc启用  取消








 

------------------------------------------------------
菜单和工具栏:

1. MenuStrip --顶部菜单

分割线1. “-”号 ,2. 右键 插入 split

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

2、ContextMenuStrip:
右键菜单 每个控件都可以有右键菜单

3、StatusStript:
底部菜单

4、ToolStrip
工具条

5、ToolStripContainer
工具条容器 四边 移动







 
 

 

发表评论
用户名: 匿名