从Winforms

时间:2017-06-07 18:55:36

标签: c# winforms user-controls

我有一个使用侧边菜单的应用程序,对于左侧菜单中的每个按钮(有3个),它会更改显示的页面。

我尝试使用多个面板进行操作,但是在设计师中进行维护是个噩梦,我希望它可能不是一个非常好的编程习惯。

所以我搜索并找到了一个好主意:UserControl。 但像往常一样,这并不是那么简单(对于像我这样自学成才的人)

该计划的一般流程如下:

  • 收集信息并在uc1_ListView中显示信息的Btn_uc1_Check按钮,
  • 一个Btn_uc2_Seek按钮,根据uc1_ListView在网上收集信息,并在uc2_ListView上显示,
  • 将来自uc2_ListView的信息编译成文件的Btn_uc3_compile,
  • 一个清除按钮,根据屏幕上的UserControl清除ListView。

现在问题:

  • 我如何能够访问位于UserControl中的ListView,以便能够从MainFrom或其他UserControl读取,清除和添加项目?

我搜索过,老实说没有找到与我需要的相符的东西?

1 个答案:

答案 0 :(得分:0)

很多问题。

  1. 您可以访问UC中的任何控件。只需将UC中ListView的属性“Modifiers”更改为“Public”。
  2. Example1

    1. 将该方法设置为public。不要使用关键字“静态”。每个控件 在您的表单中是一个类的实例,而不是实际的静态类。在主窗体中,创建一个按钮并在VS设计器中双击它。将自动生成一个方法,例如 private void button1_Click 。单击该按钮时,button1_Click中的所有代码行都将运行。

    2. 创建用户控件的公共事件处理程序,然后将main中的方法传递给处理程序。

    3. 所以UC类与此类似:

      public event EventHandler button_UC_Click_handler;
      
          public UserControl1()
          {
              InitializeComponent();
          }
      
          private void button_UC_Click(object sender, EventArgs e)
          {
              button_UC_Click_handler.Invoke(sender, e);
          }
      

      主要形式:

      public MainForm()
          {
              InitializeComponent();
              userControl11.button_UC_Click_handler += UserControl11_button_UC_Click_handler;
          }
      
          private void UserControl11_button_UC_Click_handler(object sender, EventArgs e)
          {
              MessageBox.Show("You have clicked it!");
          }
      
      祝你好运!