专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WinForm

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

发布时间:2011-06-23 13:50:12 文章来源:www.iduyao.cn 采编人员:星星草
多窗体,构造函数传值,打开唯一窗体的办法/菜单 工具栏
多窗体:
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
工具条容器 四边 移动






 
 

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: