質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

2回答

13999閲覧

C#.netでの予定表の実現方法

hosizo

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2015/08/30 17:24

C#.netにてWindowsアプリケーションを作成するのですが、
その一部の機能として、予定表を作成したいと考えております。
下記のようなGUIを実現するための良い方法をご教授頂けないでしょうか。

○全体イメージ
<参考>Google カレンダー
イメージ説明

■ビジュアルイメージ
上記のようなグリッドスタイルで、軸に時間、日付
などを持つ一般的な構成です。

■動作イメージ
ここが一番のポイントで、要点としては
・マウス操作で予定が挿入できる(削除も)
・ドラッグして、予定の時間を変更、移動ができる。

以上、が実現したい内容になります。

可能な限り既存のコンポーネント、ライブラリなどを
使用したいと考えております。

参考になるようなサンプル、プログラムの機能など
ちょっとしたものでも良いので実現するための
ヒントを頂けると大変助かります。

以上、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

開発したい対象がWindows.Formsであると仮定して書きます。

標準機能(Microsoftが用意してあるもの)では色々頑張らないと難しいと思います。
GrapeCityのMultiRow系を使ったとしてもD&Dでの移動とかは面倒ですね。

一番難しいと思われるのはドラッグによる移動です。
一般的な操作ではないので、対応した製品などはないと思っていいと思います。
やるとしたら下のような実装を自前でする必要があると思います。

1.グリッドの他にTextBox的なもの(予定を表示する枠)を用意し、非表示にしておく。
2.マウスのクリックイベントなどでTextBoxを表示させる。
3.TextBoxのイベントでグリッドに書き戻す。
4.TextBoxを非表示に戻す。

このTextBoxをマウスのイベントに絡めて座標を移動させれば、入力枠の移動は実現できます。
その後マウスを離した座標からグリッドのセル位置を特定してTextBox→セルへ値を書き戻せば出来ると思います。

次に課題になりそうなのはセルのマージ(時間をまたぐ予定の表示)だと思います。
こちらはGrapeCityのグリッド系では実装されていますのでコード上で複数セルを1つにすることは可能だと思います。
標準のDataGridViewなどではそのままでは出来ません。
改造すれば実現できそうな気もしますが、これを訊いている時点で恐らく無理だと思われます。

投稿2015/09/04 17:06

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hosizo

2015/09/13 05:01

実装のポイントを挙げて頂きありがとうございます。 グリッドビューで表自体はできそうなのですが、 やはり予定を表示する枠がネックになりそうですね。 記載頂いた内容をヒントに少しずつ解決していきたいと思います。 ありがとうございました。
guest

0

ベストアンサー

既存のコンポーネントって言うのはVisualStudioに標準で付いてる物って言う事でしょうか?
それだとDataGridViewを駆使してやる事になりそうですが、結構大変な気がします・・・
無料のコンポーネントとかではおそらく無いでしょうね。
無料の拡張物は標準のDataGridViewを拡張した物がたまにありますが完全オリジナルみたいな物は見ないし、特定の使い方に特化させた物になりますので結局は自分でカスタムする方が早い事になります。

有料でも良ければGrapecityやInfragistics等のコンポーネント集にはカスタムできる程度は分かりませんが、おそらく質問者さんがやりたい事ほぼそのままのコンポーネントが付いてます。
Googleカレンダーよりは、OUTLOOKの予定表の方がかなりイメージは近いですが。
(コンポーネントの説明自体、OUTLOOKの様なスケジュール管理が可能・・みたいな説明になってます)
当然それ以外にも標準コンポーネントより高機能なコントロールもたくさんありますので、一度チェックしてみてはいかがでしょうか?

投稿2015/08/30 23:35

landy77

総合スコア1614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hosizo

2015/09/13 04:57

お返事遅くなりました。 参考になるコンポーネントのご紹介ありがとうございます。 なるほど・・・自前で作成するのはかなりハードルが高そうですね。 有料のものと見比べながら落としどころを決めていきたいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問