如何在外部类的许多表单上将所有日期选择器更改为自定义格式
本文关键字:选择器 日期 格式 自定义 外部 表单 许多 | 更新日期: 2023-09-27 17:55:39
我有这个方法从一个形式更改所有DatePicker的格式:
public void FormatDateTimePickers()
{
foreach (Control c in this.Controls)
{
var dateTimePicker = c as DateTimePicker;
if (dateTimePicker != null)
{
dateTimePicker.Format = DateTimePickerFormat.Custom;
dateTimePicker.CustomFormat = "dd/MM/yyyy";
}
}
}
但是我有太多的继承形式的类。例如:
类 FRM1 : 表格
类 FRM2 : 表格
类 FRM3 : 表格
每个类都有特定的参数。
我想使用更改日期时间选择器格式的方法创建另一个类,并在我拥有的每个表单类上调用它。
所以,我尝试了:
clsWinFormsGeneric.cls:
public partial class clsWinFormsGeneric : Form
{
public void FormatDateTimePickers(object customform)
{
foreach (Control c in customform.Controls)
{
var dateTimePicker = c as DateTimePicker;
if (dateTimePicker != null)
{
dateTimePicker.Format = DateTimePickerFormat.Custom;
dateTimePicker.CustomFormat = "dd/MM/yyyy";
}
}
}
}
在 FRM1.class 中:
clsWinFormsGeneric.FormatDateTimePickers(this);
但是我得到错误:对象没有控件属性。
请问我能做什么?
谢谢!
对于您的代码,只需将参数从 object 更改为 From :
public void FormatDateTimePickers(Form customform)
{
foreach (Control c in customform.Controls)
{
var dateTimePicker = c as DateTimePicker;
if (dateTimePicker != null)
{
dateTimePicker.Format = DateTimePickerFormat.Custom;
dateTimePicker.CustomFormat = "dd/MM/yyyy";
}
}
}
我建议你做另一种方法:
对我来说,直接的解决方案是创建一个仅保存DatePicker
并在构造函数中设置格式的 use 控件。
public partial class CustomDatePicker : UserControl
{
public CustomDatePicker()
{
InitializeComponent();
dateTimePicker.Format = DateTimePickerFormat.Custom;
dateTimePicker.CustomFormat = "dd/MM/yyyy";
}
}
我不喜欢的另一种方法是使用所有表单都继承的BaseForm
,并将循环放入其中。
问题是参数 customForm 的类型是对象,它没有名为 Controls 的属性。尝试更改参数类型:
public void FormatDateTimePickers(Form customform)
{
foreach (Control c in customform.Controls)
{
var dateTimePicker = c as DateTimePicker;
if (dateTimePicker != null)
{
dateTimePicker.Format = DateTimePickerFormat.Custom;
dateTimePicker.CustomFormat = "dd/MM/yyyy";
}
}
}