C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: DataGridViewで改行も含めたデータを貼付する方法


(過去ログ 130 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■76766 / inTopicNo.1)  DataGridViewで改行も含めたデータを貼付する方法
  
□投稿者/ 赤いガチャピン (1回)-(2015/08/12(Wed) 01:18:02)

分類:[.NET 全般] 

Win7でVB2010で作成しています

ある表の1列のデータをクリップボードにコピーしてそれを
EditModeがEditOnEnter
ReadOnlyがFalse
SelectionModeがCellSelect
のDataGridViewに右クリックからやCTRL+Vでペーストしたところ最初の1行しかペーストされませんでした

表1列をそのままペーストしたいのですが何かやり方はあるのでしょうか?

こういう状況での過去ログを調べたのですがよくわからないのでご教授いただけると助かります。

よろしくお願いいたします。
引用返信 編集キー/
■76767 / inTopicNo.2)  Re[1]: DataGridViewで改行も含めたデータを貼付する方法
□投稿者/ 魔界の仮面弁士 (442回)-(2015/08/12(Wed) 09:42:05)
No76766 (赤いガチャピン さん) に返信
> ある表の1列のデータをクリップボードにコピーしてそれを
そのデータのクリップボードフォーマットは何になっていますか?

> 表1列をそのままペーストしたいのですが何かやり方はあるのでしょうか?
ペースト機能は自分で作りこむ必要があります。
http://dobon.net/vb/dotnet/datagridview/clipboardcopy.html#paste
引用返信 編集キー/
■76771 / inTopicNo.3)  Re[2]: DataGridViewで改行も含めたデータを貼付する方法
□投稿者/ 赤いガチャピン (3回)-(2015/08/12(Wed) 14:30:03)
No76767 (魔界の仮面弁士 さん) に返信
> ■No76766 (赤いガチャピン さん) に返信
>>ある表の1列のデータをクリップボードにコピーしてそれを
> そのデータのクリップボードフォーマットは何になっていますか?
>
>>表1列をそのままペーストしたいのですが何かやり方はあるのでしょうか?
> ペースト機能は自分で作りこむ必要があります。
> http://dobon.net/vb/dotnet/datagridview/clipboardcopy.html#paste

魔界の仮面弁士さんご回答ありがとうございます。

やっぱり作らないとダメなんですね
それで、上記サイトをを参考に作ってみようと思ったのですが、どのイベントの時に上記サイトのコードを行えばいいのかわからないでいます。
Ctrl+Vのときは

http://bbs.wankuma.com/index.cgi?mode=al2&namber=47470&KLOG=80

を参考にKeydownの条件を指定すればいいのかなとは思うのですが 右クリックからのやり方がわからないのでご教授ください。

それと 上記サイトの注意分に 

クリップボードにあるデータには列と行ヘッダーが含まれていると決め付けていますし、データ型も全く調べていません

とありますが ヘッダーはありません し データ型は調べてなにか対応したほうがいいのでしょうか?

また、クリップボードのフォーマットは今わからないのでこれが完成したら

http://dobon.net/vb/dotnet/system/clipboardformats.html

のサイトを参考に調べてみようと思うのですが・・・
引用返信 編集キー/
■76773 / inTopicNo.4)  Re[3]: DataGridViewで改行も含めたデータを貼付する方法
□投稿者/ 魔界の仮面弁士 (443回)-(2015/08/12(Wed) 15:43:28)
2015/08/12(Wed) 15:49:26 編集(投稿者)

No76771 (赤いガチャピン さん) に返信
> どのイベントの時に上記サイトのコードを行えばいいのかわからないでいます。
まずは Button などを貼って、そこから呼び出すことを検討してみては如何でしょう?
呼び出し方も大事ですが、今回の本題は「貼り付け処理」の実装にあるわけですし。


> 右クリックからのやり方がわからないのでご教授ください。
コンテキストメニューを自作する方法は、下記を参照してみて下さい。
http://dobon.net/vb/dotnet/control/contextmenu.html


もし、標準のコンテキストメニューの「貼り付け」や「Shift + Insert」や「Ctrl + V」に
反応させる場合は、少々面倒ですが WM_PASTE を捉える必要があると思います。


> http://dobon.net/vb/dotnet/system/clipboardformats.html
> のサイトを参考に調べてみようと思うのですが・・・
そこに書かれているように、IDataObject.GetFormats() で良いと思いますよ。
実際にクリップボード内のデータを取り出すときには、
そのサイトに書かれている内容を利用することになるでしょうね。

ただ、マネージオブジェクト化される時点で、多少の変換が入ってしまいますので、
調査段階においては、私はクリップボードビューワーの類を併用するようにしています。
たとえば、こういったツールで。(そこまでする必要は無いのかもしれませんが、一応念のため)
http://www.officedaytime.com/clipmm/
http://www.forest.impress.co.jp/docs/review/20140423_645708.html


> データ型は調べてなにか対応したほうがいいのでしょうか?

私が提示した URL のコメント欄にも書いていますが、たとえば
DataGridView.GetClipboardContent でコピーしたデータの場合、
 ・HTML データ
 ・Unicode テキスト データ
 ・テキストデータ
 ・ロケール情報
 ・OEM テキスト データ
などが同時に含まれます。(この他、CSV データも含まれます)


その中のどのデータを取り出すのかは、開発者側で優先順位付けが必要ですし、
そのデータで「改行を含んだセル」がどのように扱われているのかも
あらかじめ確認が必要になるかと思います。


また、今回のクリップボードデータには複数の行が含まれているそうですが、
貼り付け先の DataGridView で「複数のセル範囲」が非連続的に選択されていた場合
(たとえば、Excel で言えば、A2:C3 と G1:H10 が同時に選択されている状況など)
どのように貼り付けが行われるべきかも考慮せねばならないでしょう。

その他、DataGridView 側の行数と、貼り付けるデータの行数が
一致しない場合の振る舞いについても考えないといけませんね。
引用返信 編集キー/
■76777 / inTopicNo.5)  Re[4]: DataGridViewで改行も含めたデータを貼付する方法
□投稿者/ 赤いガチャピン (4回)-(2015/08/12(Wed) 19:11:16)
No76773 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士さんご回答ありがとうございます。

私にとってはかなり複雑ですが教えてもらったことを参考に頑張ってみたいと思います。

誠にありがとうございました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -