如何在外部类的许多表单上将所有日期选择器更改为自定义格式

本文关键字:选择器 日期 格式 自定义 外部 表单 许多 | 更新日期: 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";
        }
    }
}