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

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

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

Re[7]: DataGridViewに表示されるテキストのコピー


(過去ログ 79 を表示中)

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

■46753 / inTopicNo.1)  DataGridViewに表示されるテキストのコピー
  
□投稿者/ ピッコロ (1回)-(2010/02/10(Wed) 11:29:58)

分類:[VB.NET/VB2005 以降] 

VB2008を使用しています。
やりたいことは、以下の通りです。
・データを検索し、検索結果の一覧を表形式で表示する
・表形式で表示されたテキストの一部を選択できるようにし、選択したテキストを抽出する
 (例えば、別テキストボックスにコピーする)

そこで、検索データはDataTableで取得する予定なので、このリストを作成するのにはDataGridViewを使うのが手っ取り早いと思ったのですが、
リストに表示されるテキストは編集できないようにしたいのです。
ただし、このためにDataGridViewのセルをReadOnlyにしてしまうと、セル内のテキストの一部を選択することができなくなります。

そこで、このようなことはDataGridViewで実現可能であるか、可能であればどのようにすればよいか、不可能であればどのような代替案があるかを
ご教示頂きたく、よろしくお願い申し上げます。
引用返信 編集キー/
■46826 / inTopicNo.2)  Re[1]: DataGridViewに表示されるテキストのコピー
□投稿者/ ピッコロ (1回)-(2010/02/11(Thu) 20:41:13)
もしもDataGridViewで実現不可能であれば、HTMLの<TABLE>のような表をフォーム上に表示させて上記のことができる方法でもいいです。
何卒よろしくお願い申し上げます。
引用返信 編集キー/
■46833 / inTopicNo.3)  Re[2]: DataGridViewに表示されるテキストのコピー
□投稿者/ Hongliang (560回)-(2010/02/11(Thu) 23:13:34)
DataGridView.EditingControlShowing イベントで、イベント引数 DataGridViewEditingControlShowingEventArgs の Control を TextBoxBase にキャストしてそれの ReadOnly を設定する、という方法が考えられます。
他には DataTable を XML に書き出して XSLT で HTML に変換して WebBrowser コントロールで表示、なんて方法も考えられないでもないですが、その辺の技術に詳しくないのならばお勧めはできませんね。
直接 DataTable をバインドできて HTML の table っぽく表示できるコントロールは確か無かったはず……。
引用返信 編集キー/
■46843 / inTopicNo.4)  Re[1]: DataGridViewに表示されるテキストのコピー
□投稿者/ 魔界の仮面弁士 (1490回)-(2010/02/12(Fri) 09:36:11)
No46753 (ピッコロ さん) に返信
> リストに表示されるテキストは編集できないようにしたいのです。
> ただし、このためにDataGridViewのセルをReadOnlyにしてしまうと、セル内のテキストの一部を選択することができなくなります。

System.Windows.Form.DataGridView のかわりに、
System.Windows.Form.DataGrid を使うのは如何でしょうか。

これであれば、DataTable 上の列(DataColumn)の ReadOnly プロパティを
True にしておくだけで、テキスト部分選択可能なまま編集不可にできます。


> HTMLの<TABLE>のような表をフォーム上に表示させて上記のことができる方法でもいいです。

WebBrowser 上の HTML を使うのであれば、<table> 要素の datasrc 属性
(または dataSrc プロパティ)でバインドさせるという手法がありますが……
今回のケースでは、かえって回りくどくなってしまうかと思います。

http://msdn.microsoft.com/ja-jp/library/cc392400.aspx
http://msdn.microsoft.com/en-us/library/ms531370.aspx
http://msdn.microsoft.com/ja-jp/library/dd296833.aspx
http://msdn.microsoft.com/ja-jp/library/bb264001.aspx
http://msdn.microsoft.com/ja-jp/library/bb264002.aspx
http://msdn.microsoft.com/ja-jp/library/bb263990.aspx
引用返信 編集キー/
■46844 / inTopicNo.5)  Re[2]: DataGridViewに表示されるテキストのコピー
□投稿者/ ピッコロ (2回)-(2010/02/12(Fri) 09:55:20)
Hongliangさま、魔界の仮面弁士さま、ご回答ありがとうございます。
ところで、魔界の仮面弁士さま

No46843 (魔界の仮面弁士 さん) に返信
> System.Windows.Form.DataGridView のかわりに、
> System.Windows.Form.DataGrid を使うのは如何でしょうか。

VB2008でSystem.Windows.Form.DataGridを使用するにはどうすればよいのでしょうか?
ツールボックス内にも見つかりませんし、コード内に
Dim dg As System.Windows.Form.DataGrid
と入力すると、型System.Windows.Form.DataGridが定義されていない、というエラーになります。
何卒よろしくお願い申し上げます。
引用返信 編集キー/
■46845 / inTopicNo.6)  Re[3]: DataGridViewに表示されるテキストのコピー
□投稿者/ ピッコロ (3回)-(2010/02/12(Fri) 10:02:40)
> Dim dg As System.Windows.Form.DataGrid
> と入力すると、型System.Windows.Form.DataGridが定義されていない、というエラーになります。
申し訳ありません。これは綴り間違いで、System.Windows.Forms.〜とすればよいことが分かりました。

ただ、DataGridをツールボックスより参照し、デザイナで設計することは可能でしょうか?
何卒よろしくお願い申し上げます。
引用返信 編集キー/
■46847 / inTopicNo.7)  Re[4]: DataGridViewに表示されるテキストのコピー
□投稿者/ 魔界の仮面弁士 (1491回)-(2010/02/12(Fri) 10:24:58)
No46845 (ピッコロ さん) に返信
> これは綴り間違いで、System.Windows.Forms.〜とすればよいことが分かりました。
失礼しました。m(_ _;)m


> ただ、DataGridをツールボックスより参照し、デザイナで設計することは可能でしょうか?
ツールボックスを右クリックして、[アイテムの選択]画面から
ツールボックスに登録してみてください。


あるいは、デザイナコード(Form1.Designer.vb)に対して、
 Private WithEvents DataGrid1 As DataGrid
という変数を用意したうえで、Sub InitializeComponent メソッド内に
 DataGrid1 = New DataGrid()
 Controls.Add(DataGrid1)
というコードを追加することでも、デザイナ上に DataGrid が表示されます。
引用返信 編集キー/
■46849 / inTopicNo.8)  Re[5]: DataGridViewに表示されるテキストのコピー
□投稿者/ ピッコロ (5回)-(2010/02/12(Fri) 10:51:43)
No46847 (魔界の仮面弁士 さん) に返信
魔界の仮面弁士さま、早速のご回答ありがとうございます。
DataGridを色々試してみて、また疑問点がございましたら質問させて頂きます。
引用返信 編集キー/
■46855 / inTopicNo.9)  Re[6]: DataGridViewに表示されるテキストのコピー
□投稿者/ ピッコロ (6回)-(2010/02/12(Fri) 13:06:34)
魔界の仮面弁士さまにご教示頂いたDataGridを使用する上で、3点ほど質問がございます。

1.DataGridには文章を表示させたいので、テキストを折り返し表示させたいと思います。
 これは、以下のサイトで示されている方法で実現できそうですが、
 http://dobon.net/vb/dotnet/datagrid/wrapwordtextcolumn.html
 折り返しの際の行の高さの調整はどのようにすればいいのでしょうか?
 例えば、DataGridの全行に対してGraphics.MeasureStringで高さを計算するなどでしょうか?
 (これよりも効率いい方法があればご教示ください。)

2.DataGridで選択されたセル内の選択された文字列を取得する方法は、以下のサイトで示されている方法で実現できそうですが、
 http://dobon.net/vb/dotnet/datagrid/selectedstringincell.html
 例えばボタンやラジオボタンをクリックしたりして、DataGridからフォーカスが外れると、DataGridで選択されたセル内の
 選択された文字列のハイライト表示が消えてしまいます。
 ユーザにはどのテキストを選択したかを分かるようにしたいので、DataGridからフォーカスが外れた場合でも、
 この選択テキストのハイライト表示を残す方法はありますでしょうか?

3.DataGridでセル内の文字列を選択した場合、選択したテキストをドラッグして他のテキストボックスにドロップすることは
 できますでしょうか?

よろしくお願い申し上げます。
引用返信 編集キー/
■46858 / inTopicNo.10)  Re[7]: DataGridViewに表示されるテキストのコピー
□投稿者/ ピッコロ (7回)-(2010/02/12(Fri) 15:12:35)
上記1.に関してですが、DataGridの任意の行の高さを表すプロパティが見つからないのですが、
コードでDataGridの任意の行の高さを変更するにはどうすればよいのでしょうか?
アプリ実行時に、手動で行ヘッダをつまんで行高さを変更することはできるのですが...
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -