C# 如何通过按钮而不是直接交互来更改月历?
我有一个GUI桌面应用程序,可以在文本框中输入日期,按下按钮返回另一个日期。我还使用月历选择日期,当从月历中选择日期时,文本框会自动更改。到目前为止还不错 但这是我的问题。正如我所解释的,当从月历中选择日期时,文本框输入会发生变化。但我想不出另一种方法。我希望当有人在文本框中输入日期并按下按钮时,月历会自动更改。否则,文本框和月历会显示不同的日期,这对于应用程序来说是不合适的 是否有一种方法可以通过文本输入,然后按一下按钮来修改月历,而不是使用鼠标 这是我的密码:C# 如何通过按钮而不是直接交互来更改月历?,c#,winforms,C#,Winforms,我有一个GUI桌面应用程序,可以在文本框中输入日期,按下按钮返回另一个日期。我还使用月历选择日期,当从月历中选择日期时,文本框会自动更改。到目前为止还不错 但这是我的问题。正如我所解释的,当从月历中选择日期时,文本框输入会发生变化。但我想不出另一种方法。我希望当有人在文本框中输入日期并按下按钮时,月历会自动更改。否则,文本框和月历会显示不同的日期,这对于应用程序来说是不合适的 是否有一种方法可以通过文本输入,然后按一下按钮来修改月历,而不是使用鼠标 这是我的密码: namespace Windo
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//...
}
private void button1_Click(object sender, EventArgs e)
{
string choosefridaydate = textBox1.Text;
//code
}
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
this.textBox1.Text = monthCalendar1.SelectionRange.Start.Date.ToString("yyyyMMdd");
button1.PerformClick();
}
}
}
您可以将
SelectionStart
和SelectionEnd
属性设置为转换文本框中键入的字符串所获得的日期
private void button1_Click(object sender, EventArgs e)
{
DateTime dt;
string choosefridaydate = textBox1.Text;
if (DateTime.TryParse(choosefridaydate, out dt))
{
monthCalendar1.SelectionStart = dt;
monthCalendar1.SelectionEnd = dt;
}
}
这种方法使用DateTime.TryParse转换用户在日期中键入的字符串。如果无法根据用户PC的国际设置将格式识别为有效日期,则TryParse将返回false,并且不会设置MonthCalendar
在这种情况下,您需要使用specifyng,该格式允许用户在文本框中键入
private void button1_Click(object sender, EventArgs e)
{
DateTime dt;
string choosefridaydate = textBox1.Text;
if (DateTime.TryParse(choosefridaydate, out dt))
{
monthCalendar1.SelectionStart = dt;
monthCalendar1.SelectionEnd = dt;
}
}
还有一个SetDate方法可以更改当前选择的日期,但是您需要首先将输入文本框转换为有效日期
private void button1_Click(object sender, EventArgs e)
{
DateTime dt;
string choosefridaydate = textBox1.Text;
if (DateTime.TryParse(choosefridaydate, out dt))
{
monthCalendar1.SetDate(dt);
}
}
编辑根据您的评论,如果日期的格式为
yyyyMMdd
,则需要使用DateTime.TryParseExact
DateTime dt;
string choosefridaydate = textBox1.Text;
if(DateTime.TryParseExact(choosefridaydate, "yyyyMMdd",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
monthCalendar1.SetDate(dt);
为字段设置更改事件并调用
.setDat(Date)
?我不明白您的问题?但是我试过的都不起作用,日历保持不变,没有变化。。顺便说一句,ChooseFridayDayDate是yyyyMMdd格式。这可能是一个原因吗?是的,可能TryParse返回false。我将使用DateTime.TryParseExact更新答案这有效:如果(DateTime.TryParseExact(选择FridayDate,“yyyyymmdd”,CultureInfo.InvariantCulture,DateTimeStyles.None,out dt))