1

毎日の出席を入力するためにc#.netでカレンダーを生成したい.Webで同様の目的でjqueryカレンダーを使用しました。カレンダー コントロールを作成し、クリック イベントを取得して値をマークして表示する方法はありますか。

ありがとう

画像例:

ここに画像の説明を入力

4

2 に答える 2

2

予算があれば、Telerik の Scheduler Control のような商用コンポーネントを使用することは間違いありません。これはコレクションに 999 ドルかかります。Telerik のコントロールを使用したことがないため、自分で推奨することはできませんが、他のプロジェクトでコンポーネントを再利用できる場合、長い目で見ればそれだけの価値があるかもしれません。

それができない場合、あなたの例のように単純なものは、自分自身を転がすのがかなり簡単です. 私は主に WinForms で作業しているので、フォームを作成する方法は次のとおりです。

  1. 特定の日を表示するカスタム コントロールを作成します。月の上部隅にある日付のラベルと、その日のテキスト (イン/アウト時間) を表示するラベルが必要です。境界線を追加するかもしれません。
  2. カレンダーを含むフォームまたはコントロールを作成する
  3. 月と年のコントロールを使用して上部にドッキングされたツールストリップを追加します。コンボ ボックスまたはドロップダウン ボタンを使用します。
  4. 上部にドッキングされた薄いパネルを追加し、日付のラベルを追加します。各列の幅を決定し、それに基づいてラベルを配置します。
  5. を追加してFlowLayoutPanelに設定DockFillます。これには、左から右、上から下に流れる「日」コントロールが含まれます。

デザイナーではなく、コードで作業する必要があります。これはおそらく、コンストラクター、Page_Loadハンドラー、または月/年が設定 (または初期化) されたときに呼び出される場所で実行できます。

  1. 十分な空のパネルを に追加FlowLayoutControlして、月の開始を埋めます。new DateTime(year, month, 1).DayOfWeek月の最初の日を見つけるために何を追加するかを調べることができます。空のパネルは、「日」コントロールと同じサイズに設定する必要があります。
  2. その月の各日にdayコントロールを追加します。選択した月の日数を調べるためにFlowLayoutControl使用し、追加するときに日付 (およびおそらくイン/アウト データ) を使用して各「日」コントロールを設定します。DateTime.DayInMonth(year, month)
  3. すべてが正しく見えるまで、'day' コントロールとパディング パネルのパディングとボーダーを試してみましょう。デザイナーにいくつかのテスト「日」コントロールとパネルを追加して、そこでレイアウトをテストflowLayoutControl.Items.Clear()し、セットアップ コードを呼び出すだけです。

これにより、任意の月を動的に表示できるコントロールが作成されます。Click出席編集機能を追加するには、「日」コントロールまたはカレンダー コントロール自体にハンドラーを設定し(「日」コントロールを にFlowLayoutControl追加する場合)、モーダル フォームを開いて を編集または追加します。選択した日の /out 時間。

日コントロールのサイズを動的に変更する場合は、含まれているコントロールのResizeイベントに登録し、各日コントロールの幅と高さをMath.Floor(control.Width / 7)(7 日間幅) とMath.Floor(control.Height / 5)(5 週間高さ) などに設定します。

于 2011-07-07T11:53:57.687 に答える
0

私の知る限り、市場には標準的なスケジュール管理はありません。DevExpress のXtraScheduleコントロールを確認することをお勧めします。

于 2011-07-07T10:22:04.920 に答える