如何检查表单是否已打开,如果已打开,则从控件获取值
本文关键字:如果 控件 获取 何检查 表单 是否 检查 | 更新日期: 2023-09-27 18:15:44
基本上,我有一个带有日历(frmCalendar)控件的表单。我有另一个表单,有一个日期picker (frmDatePicker)。
frmDatePicker可以在创建frmCalendar之前打开。
我想知道的是,我怎样才能
- 检查是否打开了frmCalendar
- 如果它有,我该如何获得MonthCalendar(mcUserDate)控件的值?
如果您需要知道上下文,datePicker将为报表设置当前季度结束日期,这些报表是在应用程序外部创建的。
日历在应用程序内部使用。
如果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;
}
}
}
有几种方法可以做到:
- 表单本身保留一个全局公共静态变量,该变量指向自身,并在创建表单时初始化。输入frmcalendar。= null(那么它就存在了),那么你就必须在frmCalender中设置任何你想要访问的控件,通过properties/whatever来公共/可用。
- 一个全局表单列表,它是所有已创建表单的列表,表单在创建时将自己置于其中。其余部分与(1)类似。
- 一个组件跟踪器(我目前使用这个方法,它将每个组件模糊到它自己的类包装器中,只订阅它感兴趣的组件)。然后它可以做
Components.Find<componentWrapper>()
,如果它存在,得到它并对它做任何事情。比如订阅组件的事件等。
我相信还有更多的方法,虽然我觉得第一个最简单,仍然使用它。