DataGrigViewの各列の上に、ComboBoxを配置したいのです への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 shu  (社会人)
投稿日時
2011/4/27 22:23:47
コントロールのオーナーを変更するとHandles句は消えるので
Handles ~.~
を追加する必要があります。
Handles ~.~
を追加する必要があります。
投稿者 他路  (社会人)
投稿日時
2011/4/27 17:13:16
本件、引き続き、教えてください。
当初の目的は達成したのですが
>Windowsフォームで、新しいフォームを作成しました。
>そこに、DataGrigView を挿入しました。
ここへ、今回のようにPanel1 とPanel2を作成し、
Panel2の中に、DataGrigView1 とコンポボックスの入った、Panel1 を入れました。
そしたら、そしたら、フォームに記述してあった、次のコード
(DataGrigView1内のセルがクリックされる都度、Call 画像表示()する)
が、動かなくなりました。考えられることを一通りやってみましたがダメでした。
どのように記述すればよいのでしょうか?
Private Sub dataGridView1_CellClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs)
Call 画像表示()
End Sub
投稿者 他路  (社会人)
投稿日時
2011/4/27 14:21:32
shuさん、ご報告します。
ご提案いただいた方法が、もっとも簡単な方法だとわかりました。
スクロールと反対の方向に動いたので、Me.Panel.Left = -e.NewValue
としたらOKでした。(下記の参考リンク参照ください)
これも、shuさんのパネルA,Bの作り方に気がつかないと、実現しない手法ですね。
ありがとうございました。
また、http://bbs.wankuma.com/index.cgi?mode=al2&namber=58746
のみなさん、ありがとうございます。
解決とさせていただきます。
-----参考リンク-----
スクロール時には、以下のコードでヘッダーの位置をDatagridviewに合わせて移動する事はできています。
Private Sub Datagridview_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles Datagridview.Scroll
If e.ScrollOrientation = ScrollOrientation.HorizontalScroll Then Me.Panel.Left = e.NewValue
End Sub
ご提案いただいた方法が、もっとも簡単な方法だとわかりました。
スクロールと反対の方向に動いたので、Me.Panel.Left = -e.NewValue
としたらOKでした。(下記の参考リンク参照ください)
これも、shuさんのパネルA,Bの作り方に気がつかないと、実現しない手法ですね。
ありがとうございました。
また、http://bbs.wankuma.com/index.cgi?mode=al2&namber=58746
のみなさん、ありがとうございます。
解決とさせていただきます。
-----参考リンク-----
スクロール時には、以下のコードでヘッダーの位置をDatagridviewに合わせて移動する事はできています。
Private Sub Datagridview_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles Datagridview.Scroll
If e.ScrollOrientation = ScrollOrientation.HorizontalScroll Then Me.Panel.Left = e.NewValue
End Sub
投稿者 他路  (社会人)
投稿日時
2011/4/26 17:21:14
shuさん、ありがとうございました。
基本的には、簡単にはできないということでしょうか?。
Accessでは、Subフォームを作成することで簡単に実現していたので、
なにか方法が、ないのかな?と思っていました。
最後の手段として、アドバイスいただいた方法で、やってみようと
思っています。
いろいろと、ご提案いただいたことを試行錯誤していたら、
フォーム全体が、DataGridViewの水平スクロールで同期できる
ことがわかりました。
でも、このフォームの左上には、各種のテキストボックスやコマンドボタンが配置
されているので、DataGridViewの水平スクロール時には、
それらのコマンドボタンを残して(表示)、DataGridViewとその各列の上に配置した
ComboBoxだけを同期して水平スクロールしたいのです。
引き続き、よろしくお願いいたします。
基本的には、簡単にはできないということでしょうか?。
Accessでは、Subフォームを作成することで簡単に実現していたので、
なにか方法が、ないのかな?と思っていました。
最後の手段として、アドバイスいただいた方法で、やってみようと
思っています。
いろいろと、ご提案いただいたことを試行錯誤していたら、
フォーム全体が、DataGridViewの水平スクロールで同期できる
ことがわかりました。
でも、このフォームの左上には、各種のテキストボックスやコマンドボタンが配置
されているので、DataGridViewの水平スクロール時には、
それらのコマンドボタンを残して(表示)、DataGridViewとその各列の上に配置した
ComboBoxだけを同期して水平スクロールしたいのです。
引き続き、よろしくお願いいたします。
投稿者 shu  (社会人)
投稿日時
2011/4/26 10:07:11
panelを2重にして配置しその中にコンボボックスを配置するような方法が1つあります。
外側のpanelをPanelA,内側のPanelBとした場合、
PanelAの幅をDataGridViewの幅と同じにします。
PanelBの幅はコンボボックスがすべて並べられる幅にします。
PanelBの中にコンボボックスをすべて配置してからPanelAの中にPanelBを移動すると
よいかと思います。
DataGridViewのスクロールに合わせ、PanelBのLeftを変えると良いかと思います。
以下のリンクの内容が少し参考になるかもしれません。(進行中)
http://bbs.wankuma.com/index.cgi?mode=al2&namber=58746
外側のpanelをPanelA,内側のPanelBとした場合、
PanelAの幅をDataGridViewの幅と同じにします。
PanelBの幅はコンボボックスがすべて並べられる幅にします。
PanelBの中にコンボボックスをすべて配置してからPanelAの中にPanelBを移動すると
よいかと思います。
DataGridViewのスクロールに合わせ、PanelBのLeftを変えると良いかと思います。
以下のリンクの内容が少し参考になるかもしれません。(進行中)
http://bbs.wankuma.com/index.cgi?mode=al2&namber=58746
投稿者 他路  (社会人)
投稿日時
2011/4/26 08:37:06
早速おせわになります。
Windowsフォームで、新しいフォームを作成しました。
そこに、DataGrigView を挿入しました。
約 20列あります。
この各列で検索ができるようにこの各列の上にComboBoxを
20作成し、そのコンボボックス内の値で、DataGrigView 内をAND検索するものを作りました。
サンプル的に、数個作成したところ、うまくいきました。
ここで、しめしめと、ComboBoxを増やそうとしたのですが
右側に隠れているDataGrigView の残りの列の上にコンボボックスが
配置できないことを知りました。
上記のようなことをやりたい場合の方法は、あるでしょうか?
よろしくお願いいたします。
Windowsフォームで、新しいフォームを作成しました。
そこに、DataGrigView を挿入しました。
約 20列あります。
この各列で検索ができるようにこの各列の上にComboBoxを
20作成し、そのコンボボックス内の値で、DataGrigView 内をAND検索するものを作りました。
サンプル的に、数個作成したところ、うまくいきました。
ここで、しめしめと、ComboBoxを増やそうとしたのですが
右側に隠れているDataGrigView の残りの列の上にコンボボックスが
配置できないことを知りました。
上記のようなことをやりたい場合の方法は、あるでしょうか?
よろしくお願いいたします。
>コントロールのオーナーを変更するとHandles句は消えるので
>Handles ~.~
私も、この辺かな?とは思っていたのですが、具体的な方法はわかりませんでした。
今回、改めて、このPanel2をダブルクリックしたら、出てきました。
Handles DataView1.CellContentClick
うまくいきました。
ありがとうございました。
解決とさせていただきます。