如何显示从 MonthCalendar 到 TextBox C# 的日期

How to show date from MonthCalendar to TextBox C#

我有两种形式,一种是月份,另一种是TextBox。 问题是我在选择它后没有在 TextBox 上显示日期。 为了确定我写的是工作代码,我只在一个表单上做了同样的事情,而且工作正常。 设置 MonthCalendar 为 public 与需要显示日期的 TextBox 相同。

这是按钮和月历的代码:

public void mcKalendar_DateChanged()
{
    frmNovoVozilo fNv = new frmNovoVozilo();
    fNv.txtDatKupovine.Text =
          mcKalendar.SelectionRange.Start.ToShortDateString();
}

private void btnDatum_Click(object sender, EventArgs e)
{
    frmKalendar fKalen = new frmKalendar();
    fKalen.StartPosition = FormStartPosition.CenterScreen;
    fKalen.Show();
}

我也试过 DateSelected,它给了我同样的结果,什么都没有。 谢谢upfornt。

将值传输到前一个表单的一种方法是使用表单关闭事件处理程序和 get/set 方法来提取值。例如:

form1 = new Form1();
form1.FormClosing += new FormClosingEventHandler(GetDateFromForm);

private void GetDateFromForm(object sender, FormClosingEventArgs e)
{
    textbox1.Text = from1.GetDate;
}

然后在您的月历表格中,使用

string date;

public string GetDate {get {return date;} set {date = value;}}

Public Form2()
{
    date = monthCalendar1.SelectionStart.ToShortDateString();
}

关闭日历后,所选值将被转移。

另一种方法是在第二个表单的构造函数中发送对要应用更改的表单的引用。

在创建弹出式表单时,在您的主要表单(带按钮的表单)中,使用语法 Form2 calendarform = new Form2(this) 并编写一个 public 方法来执行您需要的

public void SetText(string text)
{
    textbox.Text = text;
}

在你的第二种形式(带有月历的形式)中,你将能够参考之前的方法。例如:

public partial class Form2 : Form
{
    Form1 _owner;

    public Form2(Form1 form)
    {
        InitializeComponent();

        _owner = form;
    }

    private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
    {
        _owner.SetText(monthCalendar1.SelectionEnd.ToShortDateString());
    }

因为我们在第二个表单中引用了以前的表单,所以您可以调用所有 public 方法,这些方法将 运行 在 form1 上。因此,在这种情况下,您可以从 form2 调用 SetText() 方法,这会将文本框更改为我们想要的任何内容 - 在您的情况下为月历的选定值。

使用DateChanged方法意味着它会在您更改日期时实时调用该方法。