トップ回答者
DataGridViewの列へのデータの取得

質問
-
こんにちは!オフィスケヤキです。お願いします。
Form内のDataGridViewの列に、他のFormのリストボックスデータを取り込み、スクロールで選べるようにしたいのです。なお各行の同列は左と同じになるようにもしたいです。ちなみにリストボックス側のvbを下記のようにしました。下記の添削とDataGridView側vbをご教授ください。
Private Shared _form8Instance As Form8
Public Shared Property Form8Instance() As Form8Get
Return _form8Instance
End Get
Set(value As Form8)
_form8Instance = value
End Set
End PropertyPublic Property ListBox1Text() As String
Get
Return ListBox1.Text
End Get
Set(ByVal Value As String)
ListBox1.Text = Value
End SetEnd Property
回答
すべての返信
-
もう少し詳細な説明をいただかないと、なかなか的確な回答が付きにくいと思います。例えば、「左に同じになるように」と書かれていますが、左が何なのかもわかりません。コードの添削にしてもプロパティの部分だけのようですので、このコードの修正だけでお望みのことが実現できるとは思えません。
繰り返しになりますが、もう少し詳細な作成したい事柄と、どのようなコードを書かれてどう動かないのかを掲載されると、的確な回答が早くつきやすいように思います。#SurferOnWwwさんの提案に沿って開発中かもしれませんが、上記を踏まえて、以後、回答者が回答しやすいように質問をすることを心がけると良いと思います。
★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
-
別のスレッドを作ったことになりまして、すみません。このフォーラムの使用方法も学習いたします。改めて質問させて頂きます。
質問の詳細な説明ですが、SurferOnWwwさんから指摘されたように内容は全く同じです。質問になってませんか。
※form8に建築の工種として約20項目ほどをListbox1に登録しました。次にform7に建具符号登録としてDataGridview1に5列のコラムを作り、左から工種・種類・建具符号・区分・タイプといたしました。工種の列に各行ともform8のリストが表示され工種(例えば:”金属工事”)を選べるようにしたいのです。よろしくお願いいたします。
-
依然として何がしたいのか分かりません。
想像をたくましくすると、以下のようなことがしたいのではと思うのですが、どうでしょう?
DataGridView に ComboBox を表示
http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年5月17日 5:48
-
officeケヤキ さん、こんにちは
フォーラム オペレーターの立花楓です。本件についてその後いかがでしょうか。問題は解決されたでしょうか。
aviator__ さん、SurferOnWww さんの情報が問題解決のご参考になると思いましたので、寄せられている情報を確認いただき、なにか進展がございましたらこちらのスレッドへご返信いただけますと幸いです。
また、ご確認いただいた際にお寄せいただいた情報が役に立った場合は、 [回答としてマーク] をお願いいたします。
よろしくお願いします。
MSDN/TechNet Community Support 立花楓
-
皆様いろいろありがとうございます。本業が忙しくてなかなか手が付けられません。今のところ、まったくの初心者ですので、ご回答頂いた参考URLにてやってみるのですが、思うように動きません。リストブックはユーザーが書き換えできるようにする予定です。このリストブックはいろいろのFormで使用します。今回は、別Formのデータグリッドビューの列にこのリストを表示させたいのですが、リストの方の送る側のVBと受け取る側のVBがまず分かりません。他のを参考にやってみていたのですがうまくいきません。それから忙しくなって、そのままにしておりました。申し訳ありません。また、時間ができたら再開したいと思います。よろしくお願いいたします。
-
ご指摘ありがとうございます。「リストブック」はリストボックスの「リスト」の事です。すみません。「設計書」は頭の中では出来上がっております。visual studioは大変便利なので、デザインformはある程度出来ています。建築設計図から各部位(屋上、外壁、室内の床・壁・天井等)の数量(面積、長さ等)を算出し集計(階別、外内部別、工事種別等)します。この集計を元に、ゼネコンが使用する内訳書を作成するのが最終目的です。内訳書作成は今回は予定していません。ただし、建設業協会のBCS・CSV(CSVの変形?)には変換できるようにしたいと思います。意匠積算です。構造積算ではありません。現在このような建築積算ソフトを使っている個人事業者です。使用中のソフトは32ビットのみでしか動きません。いろいろ改良したいところがあります。他ソフトは高価過ぎます。そこで、作ろうと思ったのです。が、素人では無理ですね。でも、visual studioに出会って変わりました。コツコツやれば出来るかな?
まずメインのformは使用中のソフトをベースにしますが、「建築物件の内容、工事種類・数量単位・建具の積算項目等の登録、外部仕上、内部仕上、各集計、印刷、エクセル出力、BCS・CSV出力」等のボタンの配置をしました。次の建築物件の内容formで各階の床面積を登録します。ここは別のスレッドで解決しました。ありがとうございます。数量積算は設計図から手入力でやりますから、間違いもたまにあります。登録床面積で積算数量を確認(多すぎる、少なすぎる)を自動でしたいのです。次に、工事種類(工種)の登録です。これは積算している項目(例えば、【床 磁器質タイル貼】とあれば、通常「タイル工事」です。仕上数量積算formで、積算項目がどの工種か必ず登録しないと集計できません。そこで、今回建具登録でも、それが必要になります。一般に建具は「金属製建具」、か「木製建具」です。時たま設計図によっては違った工種になるときがあります。建具登録formにデータグリッドビューを貼り付けその最初の列に工種リストを持ってきたいのです。ComboBoxの表示は出来ました。そこから進みません。この建具登録formが出来たら、次は建具ひとつひとつの積算(周囲の長さ、ガラスの面積、付帯した物の長さ・面積等)です。この積算formは何を使うのか等は次のこととして、まず工種リストの表示のもんだいです。どうぞよろしくお願いいたします。PS:工種はユーザーが書き換えできるようにしたい場合、プロパティでValueにしておけばよいのですか。
-
「リストブック」はリストボックスの「リスト」の事です。
独自の言葉は相手には伝わりません。
時によっては全く関係無い回答が集まってしまう事も有りますので怖いです。
「設計書」は頭の中では出来上がっております。
失礼ですが質問者様の頭の中に有るのは「イメージ」であって「設計書」では有りません。
やりたい事を一つ一つ確認される前に、全体像を固めましょう。各Formに何を配置したいかや、値を設定した後にその内容をどの様にしてForm間で受け渡すか等の全体像を固めてから、
各Form上でDataGridView上のComboBoxの制御の仕方等に当たった方が良いと思います。
※全体像を固める上で、構成要素がはっきりするのではないでしょうか?
現在お忙しい様ですが、解決に向かいます様に!!
-
> クローズしたくありません、何卒よろしくお願いいたします。
であれば、もっと具体的な話をしてもらえないと、少なくとも私は何とも対応できないです。
例えば、aviator__ さんが紹介された記事や私が紹介した記事(URL 下記)どちらでもいいですから読んでもらって、それで質問者さんのやりたいことが実現できないか、実現できない場合はどこが質問者さんのやりたいことと異なるのか、どこをどう直せばやりたいことが実現できるか書いてください。
DataGridViewの列にコンボボックスを表示する
http://dobon.net/vb/dotnet/datagridview/datagridviewcomboboxcolumn.htmlDataGridView に ComboBox を表示
http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx
以下に質問を書く際に参考になると思われる記事を紹介しておきます。一度目を通していただければ幸いです技術系メーリングリストで質問するときのパターン・ランゲージ
http://www.hyuki.com/writing/techask.html質問するときのヒント
https://teratail.com/help/question-tips今は、後者の記事にある "人に質問をするには、自分が何を尋ねたいかを知っている必要があります。これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです。" というところが不十分で、回答者としては "何がわからないかわからない人から質問を受けても、答える側も困ってしまいます。" という状況のように思います。
-
officeケヤキ さま よろしく。
皆さん、横から、失礼します。
皆さんがお書きになっている様に、DataGridView に ComboBox 表示をするのは、色々サンプルがあるのですが
混乱の原因は、
項目を定義して呼び出す部分が、他の Form に置かれた Control の Items を流用したいからではないですか?。
Me.DataGridViewComboBox7Column.DataSource = Form8.ListBox8.Items 'Form8 にインスタンスがあるなら書き換えて下さい.
これで恐らく目的は果たせると思いますが、 その前に、全体設計を見直すべきとも思います。 本当に、Form8 から値を呼ぶので良いかどうか? です。
尚、実行時の状況(徹夜も珍しくない?)を考えると、DataGridView の中に ComboBox 配置するのはミスの元になる気もします。
読み間違いの予感。 (以上:蛇足)
- 編集済み ShiroYuki_Mot 2017年5月24日 8:25 見直し推奨を追加
-
officeケヤキ さま 拝見しました。
見直しと書いたのですが、補足を。
初心者とお書きになっていますが、お作りになっているものは、きっと、相当なコード数になる筈の大きなシステムです。
それを、設計するのは、きっと、相当なレベルの知識と経験が必要と思います。
ですから、 実際に動くものを試作して試す作業と、その結果を踏まえて再設計する作業と、二重(螺旋状に)に構えた方が良いかも知れません。
データの集合を扱う時は、以下の事を考えて下さい。
内部で持つデータ集合と ユーザーの入力編集の為のデータ集合とは、必ずしも、同じでは無い事です。
内部データを 加工(呼び出し)して、分かり易い形でユーザーに提示しているケースが多いと言う事です。
既存のソフトを雛形にお作りになっている様なので、その見えている部分に引き摺られない様に注意しましょう。
先程の Form8 から値を呼ぶので良いかどうか? は、それでも良いと思います。
でも、Form8 が呼ばれないうちに Form7 が動いても正常に動くようにしないといけませんから。
コードの書き方によっては値は連動しない筈です。
(先の例では、Form8 の ListBox のデザイナーで Collection を与える前提ですので、Form7 が動いていなくても値連動しますし、Form7 で値を編集追加等すれば連動します。)- 編集済み ShiroYuki_Mot 2017年5月24日 13:15 誤字訂正
-
ShiroYuki_Mot様 ありがとうございます。
何千行ものコードがたくさん必要になると思います、頑張ってやってみます。設計を見直して書き出してみます。まだまだ先ですが自分で入力してデータの集合の違いも確認してみたいと思います。また、忙しくなってきた本業に戻りますが、面白くて楽しいソフト作成を今後もやっていきます。スキルアップしてこのフォーラムに参加できるようになればまた戻ってきたいです。
aviator様__、SurferOnWww様、trapemiya様たいへんありがとうございました。このへんでクローズいたします。