繁体   English   中英

如何检查表单是否已打开,如果已打开,是否从控件中获取值?

[英]How can I check if a form has been opened, and if it has, get the value from the control?

基本上,我有一个带有Calendar(frmCalendar)控件的表单。 我有另一个具有DatePicker(frmDatePicker)的表单。

frmDatePicker可以在创建frmCalendar之前打开。

我需要知道的是,我该怎么办?

  1. 检查frmCalendar是否已打开。
  2. 如果有,我如何获得MonthCalendar(mcUserDate)控件的值?

如果您需要知道上下文,则datePicker将设置在应用程序外部创建的Reports的当前quarterEnd日期。

日历在应用程序内部使用。

如果DatePicker默认为应用程序中选择的当前季度日期(如果已选择),则“很高兴”。

编辑

      Main Form
      |        \
      |         \
  frmCalendar    frmReports
                    \
                     \
                     frmDatePicker

还好吗?

如果表单都在同一个应用程序中,我会个人使用属性。 我将有一个formOpened属性,返回一个bool来检查表单是否已打开,我将有一个quarterEndingDate属性,它将从datePicker返回DateTime。

即在主要表格中:

if (frmcalender != null)
    {
        if (frmcalender.formOpened)
            textBox1.Text = frmcalender.quarterEndDate.ToShortDateString();
    }

在frmCalender:

public partial class frmCalendar : Form
    {
        bool activated;
        public frmCalendar()
        {
            InitializeComponent();
            activated = true;
        }

        public bool  formOpened
        {
            get
            {
                return activated;
            }
        }

        public DateTime quarterEndDate
        {
            get 
            {
                return mcUserDate.Value;
            }

            set 
            {
                mcUserDate.Value = value;
            }

        }
    }

有几种方法可以解决这个问题:

  1. 表单本身保留一个指向自身的全局公共静态变量,并在创建表单时进行初始化。 所以说frmCalender.Current!= null(然后它存在),那么你必须从frmCalender中制作你想要访问public / / via properties / whatever的任何控件。
  2. 一个全局表单列表,它是创建的所有表单的列表,表单在创建时自行放置。 其余类似于(1)。
  3. 一个组件跟踪器(我目前使用这个方法,它将每个组件混淆到它自己的类包装器中,并且只订阅它感兴趣的组件)。 然后,它可以执行Components.Find<componentWrapper>() ,如果它存在,则获取它并对其执行任何操作。 就像订阅组件的事件一样

我确信还有很多方法,虽然我发现数字1最简单,但仍然使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM