-1

フォームの特定の時点でカレンダーを表示できる必要があるクラス/関数を作成したくありません。そして、選択した日付を返します。

これは私が思いついたものです:

public static string ShowCalendar(Point locatieCalender)
    {
        MonthCalendar calender = new MonthCalendar();
        calender.Location = locatieCalender;
        calender.Show();
        calender.Visible = true;

        string date = calender.SelectionRange.Start.ToShortDateString();
        DateTime dateValue = DateTime.Parse(date);
        string dateForTextbox = dateValue.ToString("dd-MM-yyyy");

        calender.Hide();
        return dateForTextbox;

       }

問題は、カレンダーがフォームに表示されないことです。

これについて少し助けていただければ幸いです。前もって感謝します

さて、私は自分の機能を次のように変更しました:

 public static string ShowCalendar(Point locatieCalender, Form F1)
    {
        MonthCalendar calender = new MonthCalendar();
        calender.Location = locatieCalender;
        calender.Show();
        calender.Visible = true;
        calender.BringToFront();
        calender.Parent = F1;
        string date = calender.SelectionRange.Start.ToShortDateString();
        DateTime dateValue = DateTime.Parse(date);

        string dateForTextbox = dateValue.ToString("dd-MM-yyyy");

        //calender.Hide();
        return dateForTextbox;

    }

そして関数呼び出し:

string dateForTextbox = HelpFunction.ShowCalendar(calenderLocatie, this);

現在、カレンダーは表示されますが、文字列は返されません。イベントで試しましたが、静的関数が機能しないためです。

4

2 に答える 2

1

コントロールとしてフォームに追加する必要があります。その方法については、次のリンクを参照してください: http://msdn.microsoft.com/en-us/library/kyt0fzt1.aspx

例えば:

Controls.Add(calendar);
于 2013-08-28T18:11:54.820 に答える
1

コードで削除calender.Hide()します。Controls.Add次のように、またはParentプロパティを介してフォームに追加します。

   //....
    string dateForTextbox = dateValue.ToString("dd-MM-yyyy");
    calender.Parent = yourForm;
    return dateForTextbox;
   }

クラスのMonthCalendarどこかの変数を宣言し、ローカル変数の代わりに使用する必要があると思います。FormShowCalendarcalendar

于 2013-08-28T18:12:36.873 に答える