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

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

新規登録して質問してみよう
ただいま回答率
85.47%
.NET Framework

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

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

1490閲覧

メニューバーからコピーや貼り付けなどができるようになりたい

akari-5041

総合スコア3

.NET Framework

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

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

1クリップ

投稿2020/07/12 08:42

編集2020/07/12 09:54

前提・実現したいこと

メニューバーからコピーや貼り付けなどができるようになりたいです。

VB.netでメニューバーを追加したはいいものの、
今の状態だとメニューバーからコピー(C)を選択してもコピーする機能が記述されていないため何も動きません。

画面としては検索項目が入荷日FROM、入荷日TO,
ロットFROM、ロットTO,商品名FROM,商品名TOと6つ入力する項目があり、その下にDateGridViewが表示されている状態です。

それぞれの検索条件の入力項目であるTextBoxから選択された文字列をコピーしたり、切り取ったり、別のtextboxからコピーしたものを貼り付けたりしたいです。DateGridViewは関係ありません。読み取り専用に設定してあります。
どこのソースにどう書けばよろしいでしょうか。
ご教示をお願いいたします。

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

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

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

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

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

YAmaGNZ

2020/07/12 08:54

とりあえず回答にはテキストボックスでの文字のコピーペーストについてお答えしましたが、質問に一体何から何をコピーするのか提示してください。
akari-5041

2020/07/12 09:19

ご回答いただきありがとうございます。 画面としては検索項目が入荷日FROM、入荷日TO, ロットFROM、ロットTO,商品名FROM,商品名TOと6つ入力する項目があり、その下にDateGridViewが表示されている状態です。 このように検索項目がいくつかあり、 text1に限らずtext1,text2,text3…と続いています。 入力項目の内容を別の入力項目の中にコピーしたり貼り付けしたり、また切り取りをしたいと考えております。
YAmaGNZ

2020/07/12 09:23

「DataGridViewのセル」から「テキスト」をコピーしたいということですか? それで、TextBoxへそのコピーした「テキスト」をペーストしたいということですか? それとも、それぞれのTextBoxから選択された文字列をコピーしたりキャレット位置にペーストしたりしたいだけでDataGridViewのセルから何かコピーしたりはしないということですか?
YAmaGNZ

2020/07/12 09:48

質問は編集できますので、そちらのほうに細かい情報も追記をお願いします。
akari-5041

2020/07/12 09:52

後者の方を実現させたいと思っております。 それぞれの検索条件の入力項目であるTextBoxから選択された文字列をコピーしたり、切り取ったり、別のtextboxからコピーしたものを貼り付けたりしたいだけです。DateGridViewは今回は関係ありません。読み取り専用に設定してあります。
YAmaGNZ

2020/07/12 10:27

そうなのだとしたら、回答に書いた通りに参照していただいて、 それを適切なイベントで処理すればいいです。
akari-5041

2020/07/12 10:43

わかりました!いったん自分の方でやってみます。
akari-5041

2020/07/12 12:22 編集

ロットFROM、ロットTO,商品名FROM,商品名TOなどTextBoxをコピーする実装はできそうですが、 入荷日FROM、入荷日TOなどのDateTimePickerでに年・月・日で別々に指定してコピーができるように実装する方法がわかりません… ご教示いただけないでしょうか。
guest

回答1

0

ベストアンサー

TextBox(またはRichTextBox)でコピー、切り取り、貼り付け、元に戻すを行う
こちらが参考になりませんか?

DateTimePickerを対象とする場合、
コピーの場合:対象DateTimePickerの値を文字列にし、クリップボードへコピーする
ペーストの場合:クリップボードの内容がテキストで、なおかつその文字列がDateTime型へ変換可能の場合にDateTimePickerへ値をセットする

こういった形がいいのではないでしょうか。
もし、DateTimePickerからコピーしたデータのみ他のDateTimePickerへペーストしたいというのであれば、ちょっと違った方法になります。
この場合はクリップボードにコピーするデータを文字列ではなく別の形としてコピーすることになります。
クリップボード操作に関してはClipboardクラスを参照してください。

投稿2020/07/12 08:48

編集2020/07/12 12:48
YAmaGNZ

総合スコア10268

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

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

akari-5041

2020/07/12 12:22

ロットFROM、ロットTO,商品名FROM,商品名TOなどTextBoxをコピーする実装はできそうですが、 入荷日FROM、入荷日TOなどのDateTimePickerでに年・月・日で別々に指定してコピーができるように実装する方法がわかりません… ご教示いただけないでしょうか。
YAmaGNZ

2020/07/12 12:30

そのDateTimePickerでコピーした後、TextBoxにペーストした場合、どうなるように考えていますか? また、TextBoxにわざと日付の文字列(例2020/07/12)と入力しコピーした際にDateTimePickerにペーストした場合はどうなるように考えていますか?
akari-5041

2020/07/12 12:49

そのDateTimePickerでコピーした後、TextBoxにペーストした場合、どうなるように考えていますか? >年(yyyy)⇒月(MM)⇒日(dd)と順番に数字を選択できるようになっていまして、TextBoxにペーストした場合はそのまま年(yyyy)・月(MM)・日(dd)の数字が入る仕様になっているようです。 また、TextBoxにわざと日付の文字列(例2020/07/12)と入力しコピーした際にDateTimePickerにペーストした場合はどうなるように考えていますか? >先ほど述べたように年(yyyy)⇒月(MM)⇒日(dd)と順番に数字を選択できるようになっているので、DateTimePickerにペーストしても特に反応がない仕様になっています。
YAmaGNZ

2020/07/12 13:11

その仕様は現在使用しているDateTimePickerの入力部分のテキストを選択し、CTRL+Cなどのショートカットを使用しての動きだと思います。 メニューからのコピーやペーストもこのコントロールの仕様に合わせたいということですか?
akari-5041

2020/07/13 02:43

おっしゃる通りです。 DateTimePickerのコピー処理を参照しながら作成してみましたが、 「string から型 double への変換は無効です。」と記述されます。 私が記述したソースは以下の通りです。 Private Sub コピーToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles コピーToolStripMenuItem.Click If DateTimePicker1.Text > 0 Then '選択されている文字列があるときはコピーする '(SelectionLengthで調べなくても問題はない) Clipboard.SetDataObject(DateTimePicker1.Value.ToShortDateString) End If
YAmaGNZ

2020/07/13 03:36

すみません。先のコメントで >その仕様は現在使用しているDateTimePickerの入力部分のテキストを選択し、 >CTRL+Cなどのショートカットを使用しての動きだと思います。 と書きましたが、動作を確認してみた結果DateTimePickerは文字が選択されている状態でCTRL+Cを押してもコピーされませんでした。 (2020年7月13日と表示されていて、年の部分(2020)が選択された状態でCTRL+Cを押しても何もコピーされない) 誤情報申し訳ありません。 >DateTimePickerのコピー処理を参照しながら作成してみましたが、 >「string から型 double への変換は無効です。」と記述されます。 こちらですが If DateTimePicker1.Text > 0 Then この部分でのエラーとなります。 DateTimePicker1.Textの内容は”2020/07/13”といった感じで表示されているままのテキストになります。 これを0と比較しようとする時に数字(今回の場合はDouble)にキャストしようとします。 ですが、”2020/07/13”はDoubleにキャストできないためエラーとなります。 このIf文が何を目的としているのか分かりませんので必要なのか判断できませんが、必要ないのではないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問