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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

2671閲覧

C# MonthCalendarの日付をtextBoxに表示させたい

AIR11451481019

総合スコア9

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/11/24 00:04

編集2021/11/24 00:27

使用環境はwindows10、Visual Studio2019(Windows Forms アプリ、.NET Framework、バージョン4.8)です。

カレンダー(MonthCalendar)とテキストボックス(textBox)を配置し、カレンダーのある日付を選択したらテキストボックスに日付表示するようにしたいです(20211201、2021/12/01、令和3年12月01日など)。

そこで、質問が2点あります。
こちらのサイトでは「DateSelectedイベント」が使われているが、配置したMonthCalendarをダブルクリックしても「DateChangedイベント」しか出てこない。どうすればDateSelectedイベントを出せるでしょうか?
2サイトを参考にコード(下)を入力すると、「2021/12/01~2021/12/01」のように表示させることはできました(画像)。20211201、2021/12/01、令和3年12月01日などのような表示にさせるためにはどうすればよろしいでしょうか?

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace test1124 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e) { textBox1.Text = monthCalendar1.SelectionStart.ToShortDateString() + "~" + monthCalendar1.SelectionEnd.ToShortDateString(); } } }

イメージ説明

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/11/24 00:10

作っているのは Windows Forms アプリで、.NET Framework 版ですか? それも質問欄に書いてください。.NET Framework のバージョンも。
AIR11451481019

2021/11/24 00:26

はい、Windows Forms アプリ、.NET Frameworkです。バージョンは4.8です。
退会済みユーザー

退会済みユーザー

2021/11/24 00:32

> 配置したMonthCalendarをダブルクリックしても「DateChangedイベント」しか出てこない。どうすればDateSelectedイベントを出せるでしょうか? 質問のソースに、そもそもイベントハンドラが無いようですが?一応こちらで試したところ、ダブルクリックすると2回DateSelectedイベントが発生したのを確認しました。
dodox86

2021/11/24 00:45 編集

[コメント修正] > 配置したMonthCalendarをダブルクリックしても「DateChangedイベント」しか出てこない。どうすればDateSelectedイベントを出せるでしょうか? 意訳:配置したMonthCalendarをダブルクリックしても「DateChangedイベント」しか出てこない。どうすればDateSelectedイベントのイベントハンドラーのコードを追加して、イベントを処理できるでしょうか?
退会済みユーザー

退会済みユーザー

2021/11/24 00:45

和暦変換は"C# 和暦"とかで検索したらすぐ出てくると思うのですが、調べてみましたか? [1-2. 投稿前に検索し、できるところまで自分でやってみましょう] https://teratail.com/help/question-tips#questionTips1-2
dodox86

2021/11/24 00:47

まぁ確かに、今のところ参考にされたサイトのコードのまんまですね。
guest

回答1

0

ベストアンサー

1こちらのサイトでは「DateSelectedイベント」が使われているが、配置したMonthCalendarをダブルクリックしても「DateChangedイベント」しか出てこない。どうすればDateSelectedイベントを出せるでしょうか?

DateSelectedイベントハンドラの追加の仕方が判らない、ということでしょうか?
フォームデザイナに配置したMonthCalendarを選択し、プロパティウィンドウの⚡のアイコンを選択するとイベントの一覧が表示されるので、イベントハンドラを追加したいイベントをダブルクリックしてください。
イメージ説明

2サイトを参考にコード(下)を入力すると、「2021/12/01~2021/12/01」のように表示させることはできました(画像)。20211201、2021/12/01、令和3年12月01日などのような表示にさせるためにはどうすればよろしいでしょうか?

"C# 和暦" で検索したら、いくらでもそれっぽいサンプルは見つかると思いますが。

cs

1 var culture = new System.Globalization.CultureInfo("ja-JP", true); 2 culture.DateTimeFormat.Calendar = new System.Globalization.JapaneseCalendar(); 3 Console.WriteLine(new DateTime(2021,12,1).ToString("ggy年MM月dd日", culture)); //令和3年12月01日

投稿2021/11/24 01:16

編集2021/11/24 01:54
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

AIR11451481019

2021/11/24 05:17

ご回答ありがとうございます。 1はできましたが、2がまだできません。 以下のように入力してもダメでした。 ``` namespace _20211124_1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e) { textBox1.Text = monthCalendar1.SelectionStart.ToShortDateString() + "~" + monthCalendar1.SelectionEnd.ToShortDateString(); var culture = new System.Globalization.CultureInfo("ja-JP", true); culture.DateTimeFormat.Calendar = new System.Globalization.JapaneseCalendar(); Console.WriteLine(new DateTime(2021, 12, 1).ToString("ggy年MM月dd日", culture)); //令和3年12月01日 } } } ``` どこに入力すればいいのでしょうか?
退会済みユーザー

退会済みユーザー

2021/11/24 05:59 編集

DateTimeを和暦に変更するサンプルを示しただけなので、そのままコピー&ペーストしても動く訳ないでしょう。サンプルを参考にしつつ、MonthCalendarから取得した日付を書式整形して、それをtextBox1.Textに設定してください。 きちんと自分の書いているコードの意味や、使っているクラス・メソッドの機能を理解してください。最低限の知識は持ってないと、こちらが説明したところで用語なども理解出来ないと思うので、全く判らないのであれば、C#の入門書などで基礎を勉強するところから始めてください。 [1-1. teratailはサポートセンターではなく、思考するエンジニアの為のQ&Aコミュニティです] https://teratail.com/help/question-tips#questionTips1-1 > teratailを「サポートセンター」だとは思わないでください。 > 作業依頼のような投稿をして、課題や仕事を無償でやってもらえる場ではありません。
AIR11451481019

2021/11/26 02:38

わかりました。 基礎から見直してみます。ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問