首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提示用户使用MonthCalendar控件选择日期

提示用户使用MonthCalendar控件选择日期
EN

Stack Overflow用户
提问于 2017-01-22 16:57:52
回答 2查看 1.1K关注 0票数 0

我正在编写一个Winform应用程序,在某些时候我希望提示用户从日历中选择一个日期。因此,在浏览谷歌之后,我想我可以使用MonthCalendar控件来实现这一目标。现在我要说的是:

代码语言:javascript
复制
    MonthCalendar monthCalendar = new MonthCalendar();
    monthCalendar.Show();

问题是,当到达此代码时,不会发生任何事情。我做错什么了?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-23 15:34:36

这是非常基本的windows窗体处理。

MonthCalender是一个控件。你不能只显示控制。控件只能显示在ContainerControl上。ContainerControl是一个控件,它可以保存其他控件并注意显示它们。

最著名的ContainerControls之一是表单。在visual中,我们通常使用设计器创建窗体并在其上放置控件。

取决于您是只想在一个特定的表单上使用特殊的MonthCalender,还是要在几个表单上重用它,您必须决定是将您的MonthCalender放在表单上还是在用户控件上。

用户控件的好处是,您可以使用visual中的设计器在任何窗体上拖放您的特殊MonthCalender。

但是最后,你必须把你的MonthCalender放在一个表格上。一旦显示了表单,就会显示MonthCalender。

代码语言:javascript
复制
public class MySpecialForm : Form
{
    public MySpecialForm()
    {
        InitializeComponent();
    }
}

上面的内容是由在向项目中添加表单后创建的:在项目的解决方案资源管理器中右键单击并选择added窗体

在“设计器”中选择“工具箱”(菜单视图工具箱),在“Common Controls”下的“工具箱”上选择“MonthCalendar”,然后单击要显示月历的窗体。

这是基本的形式设计。添加MonthCalendar后,代码将在InitializeComponent中创建

代码语言:javascript
复制
private System.Windows.Forms.MonthCalendar monthCalendar1;

private void InitializeComponent()
{
    this.monthCalendar1 = new System.Windows.Forms.MonthCalendar();
    // 
    // monthCalendar1
    // 
    this.monthCalendar1.Location = new System.Drawing.Point(266, 83);
    this.monthCalendar1.Name = "monthCalendar1";
    this.monthCalendar1.TabIndex = 3;

您不会经常编辑这个文件,使用设计器要容易得多。

一旦您有了表单并想要显示它,例如在您的主窗体上单击一个按钮之后:

代码语言:javascript
复制
private void OnMainFormButtonClicked(object sender, ...)
{
    using (var mySpecialForm = new MySpecialForm()
    {
        // if desired set some properties of the form before showing
        mySpecialForm. ...
        // show the form and wait for the result:
        var dlgResult = mySpecialForm.ShowDialog(this);
        // process the result
        if (dlgResult == ...)
        {
            ProcessResult(form.GetFormResult);
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2017-01-22 23:55:59

要做到这一点并不难。下面的代码使用了一个小的Form,并在下面的设计器中创建了一个MonthCalender和一个Button

此表单由另一个“父”窗体调用。当用户单击“已完成”按钮时,父窗体可以使用位于GetDT中的公共方法FormCalender获取此日期。此代码只获取第一个选定日期,但是用户可以选择多个日期。此外,如果需要,您也可以进行任何错误检查。希望这能有所帮助。

表格1:

代码语言:javascript
复制
public Form1() {
  InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
  FormCalendar fc = new FormCalendar();
  fc.ShowDialog();
  MessageBox.Show("User Selected Date: " + fc.GetDT.ToLongDateString());
}

FormCalendar

代码语言:javascript
复制
public FormCalendar() {
  InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
  this.Close();
}

public DateTime GetDT {
  get {
    return monthCalendar1.SelectionStart;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41793657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档