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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■25794  Re[1]: エクスプローラー風の掲示板
□投稿者/ THREE-ONE -(2008/09/26(Fri) 09:44:29)
>
記事No.25790 のレス /過去ログ47より / 関連記事表示
削除チェック/

■64939  Re[5]: C# 描画ツールについて
□投稿者/ もとみ -(2013/01/24(Thu) 09:23:12)
    2013/01/24(Thu) 09:26:00 編集(投稿者)
    2013/01/24(Thu) 09:25:52 編集(投稿者)

    解決しました!!
    ありがとうございました。
記事No.64888 のレス / END /過去ログ110より / 関連記事表示
削除チェック/

■66472  Re[3]: Android 定期実行処理
□投稿者/ ぼぼ -(2013/04/25(Thu) 20:37:49)
    こちら、解決しました。

    Handlerをprivateで切って指定するとうまく行きました。
記事No.66409 のレス / END /過去ログ112より / 関連記事表示
削除チェック/

■89869  別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ タック -(2019/01/11(Fri) 10:10:15)

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

    サンプルを見ながら何本かVB.NETで作成してきたのですが、基本が理解できていないため躓きながらなんとか作成してきた初心者です。
    今回は、前から理解できていない内容を教えていただきたく質問いたしました。

    (Windows10 64bit、Visual Studio2017、VB.NET、ターゲットフレームワーク.NET Framework4.6.2で開発しています)

    新規プロジェクトにForm1とForm2を追加し、モジュールの追加でデータセットDataSet1.xsdを作成しその中にDataTable(DataTable1)を作成いたしました。

    Form1でDataTable1を使用するために
    Dim ds As New DataSet1()
    Dim dt As DataTable = ds.DataTable1
    と、新しいインスタンスを作成いたしました。

    ●質問
    Form1でDataTable1にデータを入力したとして、Form2から同じDataTable1を参照する方法を教えていただけますでしょうか?

    わからないなりにいくつか方法を考えたのですが実現方法が分かりませんでした。
    1.Form2から、Form1でインスタンス化したDataTable1を指定する方法
    2.Form1やその前にモジュールなどでインスタンス化する際に他のクラスからも参照できるグローバルな宣言をする方法
    3.DataSet1.xsdを作成する際やコードの指定で同じプロジェクト内であればどのクラスからでも参照できる宣言方法

    オブジェクト指向型の基本がよく理解できていないため、ピント外れなことを質問している自覚はあるのですが、本来はどうすべきなどとお考えをお聞かせいただければと思います。

    今まではForm1上にDataGridViewを作成し、そのプロパティでDataSourceにDataTable1BindingSourceを指定してきました。

    よろしくお願いいたします。
親記事 /過去ログ155より / 関連記事表示
削除チェック/

■89870  Re[1]: 別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ WebSurfer -(2019/01/11(Fri) 10:28:28)
    No89869 (タック さん) に返信

    > Form1でDataTable1にデータを入力したとして、Form2から同じDataTable1を参照する方法を教えていただけますでしょうか?

    Form1 で Form2 を初期化して表示しているのであれば、Form2 のコンストラクタに
    DataTable を引数に持つものを作り、初期化する際に DataTable への参照を渡して
    はいかがですか?。
記事No.89869 のレス /過去ログ155より / 関連記事表示
削除チェック/

■89871  Re[2]: 別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ タック -(2019/01/11(Fri) 10:48:55)
    No89870 (WebSurfer さん) に返信
    > ■No89869 (タック さん) に返信

    > Form1 で Form2 を初期化して表示しているのであれば、Form2 のコンストラクタに
    > DataTable を引数に持つものを作り、初期化する際に DataTable への参照を渡して
    > はいかがですか?。

    早速のご返答ありがとうございます

    確かにForm1からForm2を表示する際はそのような方法がとれそうですね。

    ただ、今回は独立したフォーム(クラス)から同じDataTableを参照する方法はないかと思い質問いたしました。
    将来を考えてこのような場合の考え方を確立できたらいいなと思っています。

    すみません。
    よろしくお願いいたします。
記事No.89869 のレス /過去ログ155より / 関連記事表示
削除チェック/

■89872  Re[3]: 別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ とっちゃん -(2019/01/11(Fri) 11:34:07)
    No89871 (タック さん) に返信
    > ただ、今回は独立したフォーム(クラス)から同じDataTableを参照する方法はないかと思い質問いたしました。
    > 将来を考えてこのような場合の考え方を確立できたらいいなと思っています。
    >

    「互いに無関係な独立フォーム同士で、同一のDataTableを参照する必要はないし、方法も存在しない」

    とおもいます。

    無関係ではないのなら、関係があるのでその関係の中で連動させればいいのではないでしょうか?

    プログラムには唯一の正解というのは存在しません。なので、考え方次第でいくらでも変わりますので
    目的と手段はそれぞれ別々に考える必要があります。

    プログラムには必ず「目的」があります。それは、「Hello world」であってもです。

    その「目的」を達成するために「手段」があります。

    同じDataTable を参照するというのはあくまでも「手段」です。「目的」が独立したフォームの作成なのであれば、
    そもそも連動しないので同じDataTableを持つ必要はないと考えます。

    個人的には、将来を考えるなら
    「同じデータをそれぞれ無関係なDataTable(やDataSet)で参照するにはどうすればいいか?」
    を考えたほうがよいと思います。

記事No.89869 のレス /過去ログ155より / 関連記事表示
削除チェック/

■89874  Re[3]: 別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ WebSurfer -(2019/01/11(Fri) 12:22:04)
    No89871 (タック さん) に返信

    > ただ、今回は独立したフォーム(クラス)から同じDataTableを参照する方法はないかと思い質問いたしました。

    値型と参照型の区別ができてませんね? ググるなどして調べてみてください。

    その上で・・・

    DataTable は参照型です。なので、上の私のレスで紹介した方法は、まさしく「独立したフォーム(クラス)から
    同じDataTableを参照」することになります。

    なお、同じ DataTable というのは、正確には、同じ DataTable のインスタンスです。
記事No.89869 のレス /過去ログ155より / 関連記事表示
削除チェック/

■89873  Re[4]: 別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ タック -(2019/01/11(Fri) 12:17:09)
    No89872 (とっちゃん さん) に返信
    > ■No89871 (タック さん) に返信

    回答ありがとうございます。

    そうですね。
    問題をあまりにも普遍的に考えようとして、現実的ではない条件としてしまったようです。

    現実にはどこからかForm2を呼ぶのですからその際に必要なものは渡してあげればいいのでしょう。

    このパターンで作成してみます。

    とっちゃん さん、WebSurfer さん
    お忙しい中ご回答ありがとうございました。
記事No.89869 のレス / END /過去ログ155より / 関連記事表示
削除チェック/

■89875  別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ タック -(2019/01/11(Fri) 13:15:47)
    2019/01/11(Fri) 13:54:36 編集(投稿者)

    No89873 (タック さん) に返信
    > ■No89872 (とっちゃん さん) に返信
    >>■No89871 (タック さん) に返信
    >

    値型と参照型についてちょっと勉強してみました。

    なるほど。
    DataTableは参照型なので、別のフォームを呼ぶ際に今使っているDataTableのインスタンスを渡してあげれば
    別フォームでそのインスタンスを使って同じデータを使用できる、と理解いたしました。

    後はDataTableのインスタンスの渡し方を記述できればいいのですね。

    また勉強してみます。
記事No.89869 のレス / END /過去ログ155より / 関連記事表示
削除チェック/

■89876  Re[6]: 別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ WebSurfer -(2019/01/11(Fri) 14:02:06)
    No89875 (タック さん) に返信

    > DataTableは参照型なので、別のフォームを呼ぶ際に今使っているDataTableのインスタンスを渡してあげれば
    > 別フォームでそのインスタンスを使って同じデータを使用できる、と理解いたしました。

    インスタンスを渡すわけではないです。インスタンスの位置を指している変数の値を渡すのです。

    以下の記事の「図 3-8 値型変数と参照型変数の値の格納」の「参照型の変数」の方を見てください。

    3-2 値型と参照型
    https://msdn.microsoft.com/ja-jp/library/dd314344.aspx

    インスタンスとはその図のメモリ上の位置 nnnn に存在する「String 型データの実体」です。

    例えば Form1 で Dim S As String = "hello,world!" とし、その後 Form2(String X) というコンストラクタで
    Form2 を初期化する際引数 X に S を渡す、即ち Form2 の X という変数に nnnn をコピーするということです。

    インスタンスは一つしか存在しません。インスタンスを指す変数 S が Form1 に、変数 X が Form2 にぞんざい
    することになります。
記事No.89869 のレス /過去ログ155より / 関連記事表示
削除チェック/

■89877  Re[7]: 別フォーム(クラス)から同じDataTableを参照したい
□投稿者/ タック -(2019/01/11(Fri) 15:07:16)
    No89876 (WebSurfer さん) に返信
    > ■No89875 (タック さん) に返信
    >
    > インスタンスを渡すわけではないです。インスタンスの位置を指している変数の値を渡すのです。
    >

    理解が不十分ですみません。
    ご説明で整理できました。

    きちんと理解していないと、そのつもりで記載しても違う意味になってしまいますよね。
    気を付けます。
記事No.89869 のレス / END /過去ログ155より / 関連記事表示
削除チェック/

■94716  csvファイルをメモ帳ではなくエクセルで起動するには
□投稿者/ はる -(2020/05/09(Sat) 10:16:27)

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

    System.Diagnostics.Process.Start("notepad.exe", "C:\Users\***\***.csv")

    csvファイルはカンマ区切りです。
    このようにしエクセルで起動することは可能でしょうか?
    可能でしたらその方法を教えてください。
    よろしくお願いします。
親記事 /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -