精华内容
下载资源
问答
  • 2020-12-22 20:05:34

    C#父窗体监听子窗体事件或在父窗体中处理子窗体控件的事件


    前言

    在C#程序编写过程中,我们可能会遇到子窗体点了一下按钮,或者勾选了个复选框
    想让其在父窗体中处理这个事件的问题。

    虽然可以通过直接将子窗体的控件变为公有属性,这样就可以直接在父窗体中绑定上这个事件。但是!!!

    如果业务变得复杂,这种问题变多了,会让我们的代码耦合度非常高,可读性也会变得很差。


    使用默认事件委托

    子窗体代码演示

    在这种情况下,我们便可以通过事件委托将这个事件抛出来达到这个目的。
    下面上代码演示:

            private CheckBox[] checkboxes;//我这里有若干个控件,我希望不管勾选哪个控件父窗体都能捕获到这个事件
    
            public event EventHandler CANCheckedChanged;//用于抛出某个CANID选中状态改变的事件,用于父类调用
            public SelectBox()
            {
                InitializeComponent();
                checkboxes = new CheckBox[10];//这里把控件数组初始化,现在只是数组初始化完成,数组里面的对象还是空的哦
                for (int i = 0; i < checkboxes.Length; i++)
                {
                    checkboxes[i] = new CheckBox();
                    checkboxes[i].CheckedChanged += new EventHandler(checkBoxChild_CheckedChanged);//这里将事件绑定到子窗体中的一个函数上,再通过这个函数将事件抛出给父窗体
                }
            }
            //当某个CANID选中状态改变时抛出该事件
            //这个函数用来接收这若干个CheckBox的事件,所以参数需要和系统委托保持一致
            private void checkBoxChild_CheckedChanged(object sender, EventArgs e)
            {
                //利用我们自己定义的委托将这个事件抛出
                CANCheckedChanged.Invoke(sender, e);
            }
    
    

    父窗体使用方法

          //初始化子窗体时将子窗体声明的事件委托绑定到一个处理函数上
          Form selectBox = new Form();
          selectBox.CANCheckedChanged += new EventHandler(checkBoxChild_CheckedChanged);
    
    //这里是父窗体的处理函数,也就是上面绑定的函数
            private void checkBoxChild_CheckedChanged(object sender, EventArgs e)
            {
                if (((CheckBox)sender).Checked)
                    MessageBox.Show("子窗体控件被勾选了");
                else
                    MessageBox.Show("子窗体控件被取消勾选了");
            }
    

    使用自定义的事件委托

    这里作者并没有实际测试使用过,只是突然奇思妙想,如果有误请联系作者删除

    子窗体代码演示

    //跟上面使用默认的事件委托差不多,只不过这次我们自己声明一个
            public delegate void MyEvent(int 参数1, string 参数2, object 参数3);//如果需要自定义数据可以使用自定义的委托
            public event MyEvent myEventChanged;//将上面的委托声明一个委托事件
    //然后像上面一样绑定上控件的事件
    
    
    //当某个CANID选中状态改变时抛出该事件
            private void checkBoxChild_CheckedChanged(object sender, EventArgs e)
            {
                myEventChanged.Invoke(1, "2", sender);//这时候就可以抛出我们的自定义事件
            }
    

    父窗体使用方法

          //初始化子窗体时将子窗体声明的事件委托绑定到一个处理函数上
          Form selectBox = new Form();
          selectBox.myEventChanged += new SelectBox.MyEvent(CheckedChanged);//SelectBox是子窗体的类名,这样才可以找到我们自定义的委托
    
    //使用的时候参数与上面定义的参数保持一致就可以了
            public void CheckedChanged(int 参数1, string 参数2, object 参数3)
            {
                //处理这个事件的代码
            }
    

    总结

    以上就是关于C#父窗体监听子窗体事件的内容了,如果您觉得这篇文章有误,请您指正批评,作者将感激不尽!
    更多相关内容
  • 主要介绍了VC实现给窗体的一个按钮添加事件的方法,通过三个简单步骤实现窗体按钮添加事件,需要的朋友可以参考下
  • VB演示如何加载窗体事件的例子,演示当窗体事件发生后就在窗体上输出内容,附代码下载:  Private Sub Form_Load()  Show  Print "输出字符串"  '窗体加载事件发生后就在窗体上输出内容  Text1.Text = ""  '...
  • C#WinForm窗体事件执行次序(较完整版)
  • 主要介绍了C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法,可通过重写WndProc来实现,需要的朋友可以参考下
  • private void button1_Click(object sender,EventArgs e)//单击事件,打开子窗体{ Form2 frm = new Form2(new SetVisiableHandler(SetVisiable)); frm.Show();} private void SetVisiable(){ dataGridView1.Rows....
  • Winform应用程序 控件 窗体 事件

    千次阅读 2019-08-14 19:03:33
    常用窗体属性: 快捷键:【F4】 调出 ClientSize 客户操作【界面大小】,【不计算】窗体边框和边界距离 Size 整个【窗体大小】 Name 窗体【对象命名】 Text 窗体【文本内容】 WordWrap 指示文本框是否【换行...

    Winform

    是一种智能客户端技术,我们可以使用winform应用程序帮我们获取信息,或者传输信息。

    winform UI界面语言:XAML

    常用窗体:

    工具箱可以调出所有的窗体
    在这里插入图片描述

    1. Label 【文本】
    2. button 【按钮】
    3. TextBox 【输入框】
    4. CheckBox 【复选框】
    5. RadioButton 【单选框】
    6. GroupBox 容器,可以把控件放入其中,对【多个窗体分组】
    7. PictureBox 【图片框】
    8. WebBrowser 【网页浏览器】
    9. ComboBox 【下拉框】
    10. ListBox 【列表框】
    11. OpenFileDialog 【打开文件对话框】
    12. SaveFileDialog 【保存文件对话框】
    13. FontDialog 【字体设置对话框】
    14. SaveDialog 【颜色设置对话框】
    15. Panel 容器,可以把控件放入其中,【分块管理窗体】

    常用窗体的方法

    1. string s = textBox.Text.Trim(); 【获取】文本框的内容
    2. textBox.Clear(); 【清空】文本框的字符串
    3. textBox.Focus(); 把【光标移至】文本框
    4. Message.Show(); 【显示】文本窗体
    5. form1.MdiParent = this; 设置窗体的【父窗体】
    6. LayoutMdi(MdiLayout.TileHorizontal); MDI子窗体【横向排列】
    7. LayoutMdi(MdiLayout.TileVertical); MDI子窗体【纵向排列】
    8. pictureBox.Image = Image.GetFile("图片地址"); 图片框【获取图片】
    9. comboBox.Items.Add("选项内容"); 【添加】下拉框的选项
    10. comboBox.Items.AddRange(数组); 【添加】下拉框的选项,【获取】数组元素
    11. comboBox.ItmesCclear(); 【清空】下拉框的选项
    12. comboBox.Items.Remove("某个选项"); 【删除】下拉框的选项
    13. comboBox.SelectedItem.ToString(); 【获取】下拉框选中的值
    14. listBox.Items.Add("列表内容"); 【添加】列表选项
    15. int n = listBox.SelectedIndex; 【获取】列表选中值的索引值
    16. openFileDialog.Show(); 【弹出】对话框
    17. openFileDialog.FileName; 【获取】对话框选中文件的路径
    18. openFileDialog.FileNames; 【获取】对话框选中多个文件的路径
    19. openFileDialog.InitialDirectory; 【设置】对话框的初始路径
    20. fontDialog.font; 【获取】对话框选中的字体样式
    21. saveDialog.color; 【获取】对话框选中的字体颜色

    常用窗体属性:

    快捷键:【F4】 调出
    在这里插入图片描述

    1. ClientSize 客户操作【界面大小】,【不计算】窗体边框和边界距离
    2. Size 整个【窗体大小】
    3. Name 窗体【对象命名】
    4. Text 窗体【文本内容】
    5. WordWrap 指示文本框是否【换行】
    6. PasswordChar 输入【保密】,确定输出的【单一字符】
    7. ScollBars 指示输入框是否显示【滚动条】
    8. Visiable 窗体的【显示】、【隐藏】
    9. IsMdiContainer 确认窗体是否为【MDI容器】
    10. Checked 选框窗体是否被【选中】
    11. SizeMode 图片【填充方式】,有平铺,居中,等等
    12. Url 【超链接】,url赋值类型为Uri,string转换Uri Uri u = new Uri(s);
    13. Items 选框选项的【集合】
    14. DropDownStyle 【控制】选框的样式,
    15. FileName 对话框选中【文件的路径】
    16. Filter; 设置对话框默认的【文件类型】
    17. InitialDirectory 对话框【默认路径】
    18. Title 窗体对话框的【标题】
    19. Font 文本框【字体样式】
    20. ForeColor 文本框【字体颜色】

    常用窗体事件:

    事件: 事件本身是方法,是通过窗体触发为执行条件的方法。
    快捷键:【F4】 调出
    在这里插入图片描述

    1. click 点击事件
    2. MouseEnter 鼠标进入事件
    3. TextChange 文本框输入值改变事件
    4. Load 加载事件
    5. Tick 计时器事件
    6. SelectedIndexChanged 选框索引改变事件,值改变
    7. Paint 窗体绘制事件
    展开全文
  • vb.net winform 无边框的窗体移动源码,不使用任何窗体事件
  • 主要介绍了java开发gui教程中jframe监听窗体大小变化事件和jframe创建窗体的示例,需要的朋友可以参考下
  • 写的一个小程序 适合python刚刚开始学绘画 键盘事件 鼠标事件 还有窗体 代码简单 功能齐全
  • C#+wpf窗体事件

    2012-01-01 19:20:06
    C#+wpf 窗体Loaded Closing Closed事件,2010版本,适合初学者。
  • 窗体控件同类型的控件都绑定同一个事件过程(操作该类型控件的文本等)
  • 一 概述 在窗体中除了可以通过设置属性改变外观外,还提供了事件来方便窗体的...二 Windows窗体事件 2.1 如何查看窗体事件 在Windows窗体应用中系统已经自定义了一些事件,在窗体属性面板中单击闪电图标即可查看到

    一 概述

    • 在窗体中除了可以通过设置属性改变外观外,还提供了事件来方便窗体的操作

    • 在打开操作系统后,单击鼠标或者 敲击键盘都可以在操作系统中完成不同的任务,例如双击打开"我的电脑"、在桌面上右击会出现右键菜单、单击一个文件夹后按F2键恶意更改文件夹的名称等。实际上这些操作都是Windows操作系统中的事件

    <!--more-->

    二 Windows窗体事件

    2.1 如何查看窗体事件

    在Windows窗体应用中系统已经自定义了一些事件,在窗体属性面板中单击闪电图标即可查看到窗体中的事件

     

    2.2 窗体常用事件

    事件作用
    Load窗体加载事件,在运行窗体时即可执行该事件
    MouseClick鼠标单击事件
    MouseDoubleClick鼠标双击事件
    MouseMove鼠标移动事件
    KeyDown键盘按下事件
    KeyUp键盘释放事件
    FormClosing窗体关闭事件,关闭窗体时发生
    FormClosed窗体关闭事件,关闭窗体后发生

    三 实例 通过窗体的不同颜色改变窗体的背景颜色

    3.1 新建ColorForm窗体程序

     

    3.2 添加事件

    • 右击该窗体,在 弹出的右键菜单中选择“属性”命令,然后在弹出的面板中点击闪电图标进入窗体事件设置页面

    • 在该界面中依次选中需要创建的事件,并双击该事件右侧的单元格,系统会自动为其生成对应事件的处理方法,设置后的属性面板如下图所示:

       

    • 设置好事件后会在ColorForm窗体对应的代码文件中自动生成与事件对应的4个方法(在执行不同事件时,系统会自动执行事件所所对应方法中的内容)

      public partial class ColorForm : Form
      {
          public ColorForm()
          {
              InitializeComponent();
          }
          private void ColorForm_MouseClick(object sender, MouseEventArgs e)
          {
          }
          private void ColorForm_MouseDoubleClick(object sender, MouseEventArgs e)
          {
          }
          private void ColorForm_Load(object sender, EventArgs e)
          {
          }
      }
      {
          public ColorForm()
          {
              InitializeComponent();
          }
          private void ColorForm_MouseClick(object sender, MouseEventArgs e)
          {
          }
          private void ColorForm_MouseDoubleClick(object sender, MouseEventArgs e)
          {
          }
          private void ColorForm_Load(object sender, EventArgs e)
          {
          }
      }

    3.3 添加事件处理代码

    <span style="color:#333333">public partial class ColorForm : Form
    {
        public ColorForm()
        {
            InitializeComponent();
        }
        private void ColorForm_MouseClick(object sender, MouseEventArgs e)
        {
            //设置窗体背景颜色为黑色
            this.BackColor = Color.Black;
        }
        private void ColorForm_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            //设置窗体背景颜色为蓝色
            this.BackColor = Color.Blue;
        }
        private void ColorForm_Load(object sender, EventArgs e)
        {
            //设置窗体颜色为红色
            this.BackColor = Color.Red;
        }
    }</span>

    3.4 设置启动窗体

    • 在Program.cs类中将ColorForm窗体设置为启动窗体

      static class Program
      {
          /// <summary>
          /// 应用程序的主入口点。
          /// </summary>
          [STAThread]
          static void Main()
          {
              Application.EnableVisualStyles();
              Application.SetCompatibleTextRenderingDefault(false);
              Application.Run(new ColorForm());    //设置启动窗体
          }
      }
      {
          /// <summary>
          /// 应用程序的主入口点。
          /// </summary>
          [STAThread]
          static void Main()
          {
              Application.EnableVisualStyles();
              Application.SetCompatibleTextRenderingDefault(false);
              Application.Run(new ColorForm());    //设置启动窗体
          }
      }
    • 效果图

       

    展开全文
  • 主要介绍了C#递归遍历窗体所有textbox控件并设置textbox事件的方法,包括针对textbox控件的递归遍历技巧与事件方法的设置技巧,需要的朋友可以参考下
  • 一般而言,在传统的VB6中父子窗体(诸如“闪屏”窗体是“父窗体”加载内容,然后启动自动关闭,启动主窗体,是子窗体)的...现在你突然间关闭了“闪屏”窗体,意味着创建这个“主窗体”的UI线程被终止,自然属于这个
  • 窗体基本事件1.1 窗体初始化的流程1.2 修改窗体变量1.3 窗体关闭1.4 窗体大小被改变 1. 窗体基本事件 1.1 窗体初始化的流程 选中窗体,双击: 任何控件都有一个基本属性,name:用来确定是哪个控件。 private ...


    1. 窗体基本事件


    1.1 窗体初始化的流程

    选中窗体,双击:
    在这里插入图片描述
    任何控件都有一个基本属性,name:用来确定是哪个控件。

    private void Formtest_Load(object sender, EventArgs e)
    窗体第一次被初始化。(窗体标题、大小、是否允许最大化最小化)

    一般,用户初始化代码,写在_Load函数中。


    **InitializeComponent()**是先被执行的。
    该函数中,初始化窗体的默认参数。
    在这里插入图片描述


    1.2 修改窗体变量


    这是窗体的初始状态:
    在这里插入图片描述


    修改窗体初始化参数:
    在这里插入图片描述


    编译运行:
    在这里插入图片描述


    1.3 窗体关闭


    private void Formtest_FormClosing(object sender, FormClosingEventArgs e)
    当点击窗体关闭按钮时,事件立即被执行。

    如果是要做清理或销毁对象,那么放在这里比较合适。


    private void Formtest_FormClosed(object sender, FormClosedEventArgs e)
    当执行完Closing后,该函数才会被执行。


    1.4 窗体大小被改变


    双击SizeChanged事件框:
    在这里插入图片描述


    修改代码,实时显示窗体的大小:
    在这里插入图片描述


    运行测试:
    在这里插入图片描述


    应用扩展:

    1. 可以应用于窗体大小保存体验提升;
    2. 外部窗体大小改变,通知内部窗体。

    参考资料:
    【1】窗体基本事件与事件的顺序

    展开全文
  • 在做一个联系人管理的C#设计时,遇到了这个问题,我需要将父窗体中的textBox中的值传到子窗体并进行数据库查询操作,我用了new 父窗体().textBox.text;来进行值传递,然而并无卵用,... //实例化子窗体事件 private
  • 主要为大家详细介绍了Java Swing窗体关闭事件的调用关系,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • c#的winform中,子窗体继承父窗体,但是子窗体按钮点击的时候或者子窗体的其他事件触发后,父窗体的对应事件也会被触发。 有一个现象是子窗体在继承父窗体的情况下,子窗体中对应的控件无法修改名称,这也就导致了...
  • 主要给大家介绍了关于C#窗体间常用的几种传值方式及委托与事件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用小程序具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • C#窗体关闭事件

    千次阅读 2021-01-20 16:32:19
    很多初学者都想把默认的C#关闭按钮事件弄明白,主要用在我想关闭窗口但是我还想在关闭前有一个提示,可是网上真的有太多的答案都是错的,今天在这里从头到尾给大家设置一下,希望可以帮到大家。 1、第一步 2、第二...
  • 窗体中常用事件

    千次阅读 2017-07-30 16:00:59
    事件:即发生的事儿,简单理解为用获得操作,它有对象引发。 ...若果为窗体添加一控件,只要在事件面板里选择要添加的事件,在其后面的空格双击,相应的事件将会自动的生成,默认被选中的是最常用
  • 在Form1窗体中添加鼠标单击窗体事件,并在该事件对应的方法中写入打开 Form2 窗体的代码,点击窗体1,然后有下角点击事件,具体代码如下。 点击MouseClick,实现单击后弹出新的窗口的功能,双击MouseClick,跳到...
  • 对于关注对 Windows 窗体应用程序中引发的每个事件按次序进行处理的开发人员来说,事件引发的顺序特别重要。 当某种情况需要小心处理事件时(如重绘窗体的某些部分时),必须知道事件在运行时的确切引发顺序。 本...
  • 一个小Demo,一个主窗体中通过按钮实现 三个子窗体的切换显示,三个子窗体的切换的过程中,其窗体上的数据不会丢失。
  • 使用窗体及其他控件做查询的条件的输入 使用excel作为查询结果的输出 从桌面上看应该是,前面一个窗口输入查询条件,然后点确定,后面有个excel显示结果。 类似下图这种 一、打开窗口 窗体俗称对话框,在可视...
  • C# 窗体传值(子窗体向主窗体传值) //声明一个委托 public delegate void DisplayUpdateDelegate(string str); //声明事件 public event DisplayUpdateDelegate ShowUpdate;
  • 判断条件后关闭窗体,当不满足条件阻止关闭窗体,防止任务栏中意外关闭窗体。对于关闭条件不满足时运行关闭窗体
  • ###方法3:子窗体弹出来之前,注册事件,关注主窗体消息的变化,当有多个窗体需要接收信息,,只需要分别为窗体注册数据接收事件即可,实现了数据传递的解耦性; 方法2与方法3即为发布订阅模式(观察者模式)----我...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 137,629
精华内容 55,051
关键字:

属于窗体事件的是