DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
Newtarget="_blank"で開いたページの閉じる処理(window.close())が動かない(0) | Nomal正規表現で株価を取得したい(1) | Nomal親スレッドへ処理の移譲(7) | Nomalデザイナで編集・チェックアウトキャンセルすると(3) | NomalVB.NETで作成したDLLをVB6.0から呼び出す(3) | NomalVB.NETからRDゲートウェイを利用したリモートデスクトップ接続(4) | NomalクラスによるGetBytes関数のエンディアンの違い(2) | Nomal.Net 5.0 におけるServiceControllerの代替クラス(3) | Nomal[VB.NET]Excelのプロセスが終了しない(2) | NomalC#をVBに変換した際の強制的な参照渡し(2) | Nomal新たにshowしたフォームでのボタンのクリック(5) | Nomalリッチテキストボックスの文字を太文字にしたい(2) | NomalVB.netにおける固定長出力方法(3) | NomalDataObjectの使いまわし(5) | NomalLIstview のDataSource(2) | NomalClassの作り方(2) | NomalOpenFileDialogの初期ファイル名の表示が変(1) | NomalVB.NETのVBA化(2) | Nomal改行のコード(7) | NomalGoogle翻訳の結果の取得(2) | NomalStopwatchクラスのElapsedMillisecondsの挙動(2) | Nomal.net Chartで二重ドーナツグラフの作り方(3) | Nomalexeをショートカットから起動した場合のエラー(2) | Nomalデスクトップ と Desktop(6) | Nomalデザイナのプロパティウィンドウで静的プロパティを選択したい(3) | NomalPHPでシリアライズした、データをデシリアライズしたい(4) | Nomal二次元配列 インデックスが配列の境界外(2) | NomalVB.netで作成したexeのNgenによる弊害(1) | NomalDrawBezierの使い方について(7) | Nomalメジャーバージョンの異なるLog4netライブラリを参照したい(4) | NomalVB6→2005変換時のDeclare宣言のマーシャリング属性(8) | NomalGROUPBOXの複製について(vb.net)(1) | NomalActiveReports 3.0からActiveReports 7.0へのァイルコンバータについて(4) | NomalAccess OLEでExecuteNonQuery(3) | NomalKeyDownでの右コントロールキーイベント(2) | NomalExcel複数シートの印刷順序(3) | NomalWMPへno(3) | NomalDataGridViewの行番号(7) | Nomalapp.config定義によるネットワークトレースログの世代管理(2) | Nomalrelease/debugのどちらで作成されたものかを判断する方法(2) | NomalC#コンソールアプリでタイピング練習ソフト作成(3) | Nomal自分自身を呼び出すのはOKですか(1) | NomalWebBrowser Control foreachで値が消える(2) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | NomalWebBrowser Controlを使って、任意の値を取得(5) | NomalEditボックスに簡体字をセットする方法(2) | NomalList型でエラーが起きてしまい・・・(1) | Nomalフォルダ内の全ての容量を取得したい(4) | NomalWebClientが上手く動かない(2) | Nomal共変性と反変性ってこういうこと?(4) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalLINQの拡張メソッドの定義(1) | Nomalこんな演算子初めて見ました。(5) | Nomalプロセスからウインドウを取得(4) | Nomalフォーム外のカーソルの変更(2) | NomalLINQのメソッド構文の書き方(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | Nomalラムダ式の勉強中(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | NomalNewの使い方間違ってますか?(4) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalC#をVBに変換(2) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalCatch時のex.StackTraceの情報(3) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalPictureBox.Locationのキャンセル(3) | NomalJOIN操作の構文エラー(4) | NomalVisualStudioでマクロ(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalRDP接続でのネットワーク帯域制限(0) | NomalFILE.COPYでIOExceptionエラーが出る(11) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalDrawImage でメモリ不足エラー(3) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalCode128でバーコードが読み取れない(8) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | NomalVC++ → VB.Netに変換時に文法エラー(2) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) | NomalVb.netからAccessへの接続について(3) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal令和の日付への対応(3) | Nomalスクロールバーが出た時に高さを変えたい(4) | Nomal自作したアプリの発行元を明記したい(2) | NomalHTTP 417エラーを発生させるためのIIS設定はどうすればよいか(3) | Nomal起動ディスプレイの指定方法について(6) | NomalSystem.Threading.Thread.Sleep()と変数(2) |



■記事リスト / ▼下のスレッド
■34592 / 親記事)  新たにshowしたフォームでのボタンのクリック
□投稿者/ 未熟者ケンイチ 一般人(1回)-(2020/12/09(Wed) 14:29:09)
  • アイコン環境/言語:[c#] 
    分類:[.NET] 

    いつも参考にさせて頂いております。初めて投稿いたします。よろしくお願いいたします。

    c#にて

    Form_02 open_form = new Form_02 ();
    // フォーム表示
    open_form.Show (this);
    // 通信処理など、長時間かかる処理
    open_form.form_02_proc ();

    としました。するとForm_02が表示され、表示と同時にメソッドform_02_procが呼び出されます。ここまでは意図した通りです。

    Form_02にはボタンがいくつかありどのボタンも現象は同じで、最初のクリックでは反応せず、2回目のクリックでやっと処理が行われます。

    現在form_02_procはテスト用のコードが書かれており、
    internal void form_02_proc ()
    {
    Int32 loop = 0;
    // お仕事シミュレーション
    while ((15000 > loop) &&
    (false == exit_flag))
    {
    Application.DoEvents ();
    loop++;
    textBox_test.Text = loop.ToString ();
    }
    // 「戻る」クリックと同じとする
    p_result = RESULTS.ABORT;
    exit_flag = true;
    }
    となっております。

    上記「2度クリックしないとボタンの処理が起動しない」点について悩んでおり、諸先輩方のお力をお借りしたく投稿させていただきました。よろしくお願いいたします。
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■34593 / ResNo.1)  Re[1]: 新たにshowしたフォームでのボタンのクリック
□投稿者/ 魔界の仮面弁士 大御所(1308回)-(2020/12/10(Thu) 13:06:48)
  • アイコンNo34592に返信(未熟者ケンイチさんの記事)
    > c#にて
    c# ではなく、
    C# ですね。

    > // 通信処理など、長時間かかる処理
    > open_form.form_02_proc ();
    長時間かかる処理を UI スレッドで実施してはいけません。

    ループ待機 + DoEvents での待ち合わせなどを行うのではなく、
    C# 5.0 以上であれば async 、それ未満なら BackgroundWorker を使うなどして
    時間のかかる処理を別スレッドに分離することを検討してみてください。
違反を報告
引用返信
■34596 / ResNo.2)  Re[2]: 新たにshowしたフォームでのボタンのクリック
□投稿者/ 未熟者ケンイチ 一般人(2回)-(2020/12/10(Thu) 17:01:16)
  • アイコン返信いただき、ありがとうございます。

    > ループ待機 + DoEvents での待ち合わせなどを行うのではなく、
    > C# 5.0 以上であれば async 、それ未満なら BackgroundWorker を使うなどして
    > 時間のかかる処理を別スレッドに分離することを検討してみてください。

    ご指摘いただいた通り、本番のコードはそのようにする予定です。
    ただ、このような方法でテスト用のコードを書き、表示と操作を行っているフォームがいくつもあるのですが、こちらで質問させていただいたもの「だけ」がこのようになるので、どこかのプロパティか、呼び出し方法の問題か、別件で色々いじったので「何かあるのかな?」と考えた次第です。

    ボタンやテキストボックス等のない、フォームをクリックした後でもボタンが効きますので、どうも「1回目のクリックでフォームがアクティブ?になり、2回目のクリックでボタンクリックが認識されている」感じです。

    誠に申し訳ありません。お手すきの方、もう少しお相手して頂けると幸いです。
違反を報告
引用返信
■34597 / ResNo.3)  Re[3]: 新たにshowしたフォームでのボタンのクリック
□投稿者/ 魔界の仮面弁士 大御所(1309回)-(2020/12/11(Fri) 10:17:43)
  • アイコンNo34596に返信(未熟者ケンイチさんの記事)
    > どうも「1回目のクリックでフォームがアクティブ?になり、
    > 2回目のクリックでボタンクリックが認識されている」感じです。

    そのあたりの動作は、コントロールによっても異なっており、
    たとえば Button と ToolStripButton でも異なる動作となります。
    具体的には、非アクティブフォームの ToolStripButton をクリックした場合、
    初回はボタンが動作せず、単にフォームがアクティブ化するだけで、
    2 回目のクリックで、ようやくボタンが押されることになります。

    もしも一回のクリックでアクティブ化とボタン動作を同時にこなしたい場合、
    該当コントロールの WndProc をオーバーライドして、
    WM_MOUSEACTIVATE 時の戻り値を、MA_ACTIVATEANDEAT から
    MA_ACTIVATE に差し替える必要が生じます。
    https://docs.microsoft.com/ja-jp/windows/win32/inputdev/wm-mouseactivate
    https://docs.microsoft.com/en-us/archive/blogs/rickbrew/how-to-enable-click-through-for-net-2-0-toolstrip-and-menustrip


    あるいは、コントロールの種類が他のフォームの場合と同様であるのに
    該当フォームだけ動作が異なるというのであれば、継承フォームや
    NativeWindow クラスで処理されている可能性、あるいは別の UI スレッドで
    動作していたために、フォーカス遷移が阻害されている箇所があったなどの
    理由かもしれません。ソースを追わないと何とも言えないですが。
違反を報告
引用返信
■34599 / ResNo.4)  Re[4]: 新たにshowしたフォームでのボタンのクリック
□投稿者/ 未熟者ケンイチ 一般人(3回)-(2020/12/14(Mon) 17:44:20)
  • アイコンNo34597に返信(魔界の仮面弁士さんの記事)
    > ■No34596に返信(未熟者ケンイチさんの記事)
    >>どうも「1回目のクリックでフォームがアクティブ?になり、
    >>2回目のクリックでボタンクリックが認識されている」感じです。
    >
    > あるいは、コントロールの種類が他のフォームの場合と同様であるのに
    > 該当フォームだけ動作が異なるというのであれば、継承フォームや
    > NativeWindow クラスで処理されている可能性、あるいは別の UI スレッドで
    > 動作していたために、フォーカス遷移が阻害されている箇所があったなどの
    > 理由かもしれません。ソースを追わないと何とも言えないですが。

    お忙しい中でのお返事、どうもありがとうございます。
    せっかくお返事を頂いたのに、反応が遅くなってしまいました。申し訳ありません。
    URLもご教示いただきましたが英語が苦手なため、Googleさんに聞きながら悪戦苦闘しております。

    一応、ソースを貼ります。コメントは削除しましたが、その他はソースコードのままです。

    ・呼び出し側
    Form_02 open_form = new Form_02 ();
    open_form.Show (this);
    open_form.form_02_proc ();
    // 処理終了で結果を取得
    a_result = open_form.A_RESULT;


    ・呼ばれる側
    public Form_02 ()
    {
    InitializeComponent ();
    }
    private void Form_02_Load (object sender, EventArgs e)
    {
    // 表示位置調整
    this.Location = new Point (0, 0);
    // サイズ変更の禁止
    this.MaximumSize = this.Size;
    this.MinimumSize = this.Size;
    // タイムアウトタイマを起動
    timeout_timer = 1000;
    timer_a.Enabled = true;
    }
    private void button_1_Click (object sender, EventArgs e)
    {
    a_type = A_TYPE.MEMBER;
    a_machine = A_MACHINE.MACHINE01;
    p_result = A_RESULTS.SUCCESS;
    exit_flag = true;
    }
    internal void form_02_proc ()
    {
    Int32 loop = 0;
    // お仕事シミュレーション
    while (false == exit_flag)
    {
    Application.DoEvents ();
    loop++;
    textBox_test.Text = loop.ToString ();
    }
    }


違反を報告
引用返信
■34600 / ResNo.5)  Re[4]: 新たにshowしたフォームでのボタンのクリック…自己解決
□投稿者/ 未熟者ケンイチ 一般人(5回)-(2020/12/14(Mon) 18:47:07)
  • アイコン自己解決いたしました。魔界の仮面弁士様、お忙しい中のご教示、どうもありがとうございました。

    ソースコードは以下のように
    Form_02 open_form = new Form_02 ();
    this.Visible = false;
    open_form.Show (this);
    open_form.form_02_proc ();
    と、それまで表示していたフォームを非表示にするコードを挿入するだけでした。
    確かに他のフォームは、
    open_form.Close ();
    してからさらに別フォームを表示していたので、おそらくこの1行が効いているのだと思います。また上記「this」で指されるフォームは、アプリケーションを起動した時に表示されるフォームだったので、盲点になっておりました。

    魔界の仮面弁士様はじめお読みいただいた皆様、どうもありがとうございました。
    またお世話になることがあるかもしれませんが、その時はどうぞよろしくお願いいたします。
    とりあえずは、これで解決といたします。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34594 / 親記事)  リッチテキストボックスの文字を太文字にしたい
□投稿者/ よっし〜 一般人(1回)-(2020/12/10(Thu) 16:27:12)
  • アイコン環境/言語:[VB.NET NET Framework4.0] 
    分類:[.NET] 

    いつもお世話になっております。
    現在リッチテキストボックスを使用してメモ帳的なものを作成しています。
    その中で「選択されている文字をフォント種類やサイズを変更せずに”太文字”に設定したい」のです。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Bold)
    End Sub

    とすれば良いと思ったのですが、「ユーザが文字を選択していてもSelectionFontがIsNothingになる」事があります。よって・・・

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    If Not IsNothing(RichTextBox1.SelectionFont) Then
    RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Bold)
    Else
    RichTextBox1.SelectionFont = New Font(????, FontStyle.Bold)
    End If
    End Sub

    と思ったのですが「?」の部分はどう記述すれば良いのでしょうか??
    以上、宜しくおおしえください。
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34595 / ResNo.1)  Re[1]: リッチテキストボックスの文字を太文字にしたい
□投稿者/ Hongliang 大御所(591回)-(2020/12/10(Thu) 16:49:58)
  • アイコンhttps://dobon.net/vb/bbs/log3-47/28332.html
    これなどいかがでしょうか。
違反を報告
引用返信
■34598 / ResNo.2)  Re[2]: リッチテキストボックスの文字を太文字にしたい
□投稿者/ よっし〜 一般人(2回)-(2020/12/14(Mon) 09:05:45)
  • アイコンHongliang様、早速のご教示有り難うございます。

    > https://dobon.net/vb/bbs/log3-47/28332.html
    > これなどいかがでしょうか。
    ご案内して頂いた内容ですが、探した「つもり」でしたが過去掲示板に同様の質問があったんですね。(失礼しました)
    私にすればかなりハイレベルではありますが、内容を自分なりに解析してみたいと思います。
    どうも有り難うございました。


違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34585 / 親記事)  VB.netにおける固定長出力方法
□投稿者/ rarara 一般人(1回)-(2020/11/27(Fri) 13:54:57)
  • アイコン環境/言語:[Windows10 64bit] 
    分類:[.NET] 

    現在VB.netにて固定長のテキストファイルを作成する開発を行っております。
    今のところうまく動いているようですが、引数が正しいのかが判断できず相談させて頂く次第です。ちなみに1行毎に改行を挟みます。
    ※ネットで調べてはみましたがあまり理解できず・・・。

    <前提条件>
    ・ヘッダーのレコード長は1208
    ・明細のレコード長は141

    <実際のコード>

    'ヘッダー配列の定義
    Private Structure ヘッダ_PROPERTY
    <VBFixedString(2)> Dim Header1 As String


    <VBFixedString(27)> Dim Header5 As String
    End Structure

    '明細配列の定義
    Private Structure 明細_PROPERTY
    <VBFixedString(2)> Dim Detail1 As String


    <VBFixedString(27)> Dim Detail5 As String
    End Structure


    ※ファイル出力部分
    'ファイル作成およびオープン
    FileOpen(FileNo, FilePath, OpenMode.Random, OpenAccess.Write, OpenShare.LockWrite, 1208)

    'ヘッダーの配列に出力値を設定

    'ヘッダー内容をファイルへ出力
    FileSystem.FilePut(FileNo, ヘッダPROPERTY, RECNO)

    '明細の配列に出力値を設定

    'ヘッダー内容をファイルへ出力
    FileSystem.FilePut(FileNo, 明細PROPERTY, RECNO)



    上記のようにコードを書いており、現状は問題なく動いているようですが
    「FileOpen(FileNo, FilePath, OpenMode.Random, OpenAccess.Write, OpenShare.LockWrite, 1208)」の1208が正しいのかが判断できません。

    1208と設定しているのはヘッダーのレコード長が1208であるためですが、ここで1208と設定してしまうと以降も1208バイトずつ出力されると思っていたのですがそうでもないようです。

    ここの部分には一体何を値を引数として渡すべきでしょうか。
    ちなみに改行は、ヘッダーや明細の配列の最後の項目に改行コードを入れて対応しています。
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■34586 / ResNo.1)  Re[1]: VB.netにおける固定長出力方法
□投稿者/ rarara 一般人(3回)-(2020/11/27(Fri) 16:28:47)
  • アイコン投稿主です。
    すみません、うまくいっていたのは2行で確認したからであって、3行目以降は1208バイトずつ出力されていました。

    恐れ入りますが、どのように対処すべきかご教示頂けないでしょうか。
違反を報告
引用返信
■34589 / ResNo.2)  Re[2]: VB.netにおける固定長出力方法
□投稿者/ shu 大御所(491回)-(2020/12/01(Tue) 13:55:43)
  • アイコン
    No34586に返信(rararaさんの記事)
    
    
    行毎にサイズが違うのであれば提示された方法は利用できません。
    また記述が古い方法であるので、推奨されません。
    以下、半角文字(ASCII)のみと仮定したサンプルです。
    
    
    Imports System.IO
    Imports System.Text
    
    
    
            Dim enc = Encoding.ASCII
    
            Using stm = File.OpenWrite("D:\work\test.txt")
                '行内容編集用バッファ最大byte数確保
                Dim buf = New Byte(50) {}
    
                Dim wrt As New BinaryWriter(stm)
                'ヘッダ(50byte)
                Dim hd As New MemoryStream(buf)
                hd.Write(enc.GetBytes("ab"))
                hd.Write(enc.GetBytes("cd"))
                hd.Write(enc.GetBytes(New String(" "c, 48 - hd.Position)))
                hd.Write(enc.GetBytes(vbCrLf))
                wrt.Write(buf, 0, 50)
                '明細(10byte)
                For i = 1 To 5
                    Dim dtl As New MemoryStream(buf)
                    dtl.Write(enc.GetBytes(i.ToString("00")))
                    dtl.Write(enc.GetBytes("abc" & i))
                    dtl.Write(enc.GetBytes(New String(" "c, 8 - dtl.Position)))
                    dtl.Write(enc.GetBytes(vbCrLf))
                    wrt.Write(buf, 0, 10)
                Next
            End Using
    

違反を報告
引用返信
■34590 / ResNo.3)  Re[3]: VB.netにおける固定長出力方法
□投稿者/ rarara 一般人(1回)-(2020/12/02(Wed) 10:17:26)
  • アイコン返信が遅れてしまい、申し訳ありません。

    > 行毎にサイズが違うのであれば提示された方法は利用できません。
    やっぱりそうだったのですね・・・。

    > また記述が古い方法であるので、推奨されません。
    そうなのですね、ネットで検索した際に出てきたもので参考としていました。

    > 以下、半角文字(ASCII)のみと仮定したサンプルです。
    ありがとうございます。記載頂いた内容で解決できました。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-3]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34581 / 親記事)  DataObjectの使いまわし
□投稿者/ Vetty 一般人(11回)-(2020/11/21(Sat) 11:38:06)
  • アイコン環境/言語:[Windows10,VB] 
    分類:[.NET] 

    現在 
    'データベース接続オブジェクト
    Private dbcon1 As New OleDb.OleDbConnection
    Private dbcon2 As New OleDb.OleDbConnection
    Private dbcon3 As New OleDb.OleDbConnection
    'データセット
    Private datset1 As New DataSet
    Private datset2 As New DataSet
    Private datset3 As New DataSet
    'データアダプタ
    Private dbadpt1 As New OleDb.OleDbDataAdapter
    Private dbadpt2 As New OleDb.OleDbDataAdapter
    Private dbadpt3 As New OleDb.OleDbDataAdapter
    'コマンド
    Private dbcmdSelect1 As New OleDb.OleDbCommand
    Private dbcmdSelect2 As New OleDb.OleDbCommand
    Private dbcmdSelect3 As New OleDb.OleDbCommand

    という構成でひとつのMDBファイル(古いアクセス形式)内の
    3つのテーブルをそれぞれ専用のDataGridViewに表示しています。
    (テーブル間の接続はしていない単純なSelect文(3つとも)です)

    表示されている3つのDataGridView上でそれぞれ追加削除訂正して
    「書込みボタン」操作で

    'コマンド自動ビルダ
    Dim cmdbld1 As New OleDb.OleDbCommandBuilder(dbadpt1)
    Dim cmdbld2 As New OleDb.OleDbCommandBuilder(dbadpt2)
    Dim cmdbld3 As New OleDb.OleDbCommandBuilder(dbadpt3)

    を使って更新しているのですが(動作はうまくしているようです)、
    何か無駄にObjectが多いように感じます。

    以前の質問(https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=34574&rev=&no=0)のようなListViewの場合は
    Select文とListViewの関係は表示終了時点で切れているので
    次のListViewの表示にも同じDataObjectを使っても問題ないと思います。

    今回の場合、3つがそれぞれ並行して動作し続けているのでむやみに
    使いまわしをするのもよくないとは思いますが、すべて個別にDataObject
    をつくるのも無駄があるように感じます。
    (OleDbConnection だけはひとつでいいように思いますが・・・)

    やはり個別に作るべきなのでしょうか?
違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■34582 / ResNo.1)  Re[1]: DataObjectの使いまわし
□投稿者/ sima 一般人(1回)-(2020/11/22(Sun) 19:45:17)
  • アイコンNo34581に返信(Vettyさんの記事)
    > 現在 
    > 'データベース接続オブジェクト
    > Private dbcon1 As New OleDb.OleDbConnection
    > Private dbcon2 As New OleDb.OleDbConnection
    > Private dbcon3 As New OleDb.OleDbConnection
    >
    > という構成でひとつのMDBファイル(古いアクセス形式)内の
    > 3つのテーブルをそれぞれ専用のDataGridViewに表示しています。

    > 何か無駄にObjectが多いように感じます。

    >すべて個別にDataObject
    > をつくるのも無駄があるように感じます。
    > (OleDbConnection だけはひとつでいいように思いますが・・・)
    >
    > やはり個別に作るべきなのでしょうか?

    『やはり』とお考えなのであれば、何がお分かりでない(又は、不確かと)お考えなのでしょうか?

    DataObject が何を指すのかが良く判りませんでしたが、

    connection(接続オブジェクト) で指定する mdb ファイルが一つなのであれば、
    connection を三つ作らなければならないことについて説明できないと
    私は考えます。
違反を報告
引用返信
■34583 / ResNo.2)  Re[2]: DataObjectの使いまわし
□投稿者/ Vetty 一般人(12回)-(2020/11/23(Mon) 11:53:46)
  • アイコン早速のご回答ありがとうございます。

    >DataObject が何を指すのかが良く判りませんでしたが、

    質問内にでてくる
    OleDb.OleDbConnection
    DataSet
    OleDbDataAdapter
    OleDbCommand
    を指します。

    >onnection(接続オブジェクト) で指定する mdb ファイルが一つなのであれば、
    >connection を三つ作らなければならないことについて説明できないと>
    >私は考えます。

    時間の流れがないという前提ならそうなのですが、
    質問の設定で実行して、現在3つのDataGridVieに想定どおりの内容が
    表示できた時点から、あらたに別のMDBファイルを使い4つめのDataGriViewに
    表示しようというときに、いままさに使用中の(あるいはすでに使い終え
    たDBConectionをあらたな2つめのMDBファイル用に使いまわしできるか?
    ということなんです。

    最初の質問の範囲内でいえば、
    3つのDataGridViewそれぞれに用意している3つのOleDb.OleDbCommandを
    ひとつのOleDb.OleDbCommandで使いまわしできるのでしょうか?

    使用する条件も明確にしたほうがいいでしょうか・・

    1.3つのDataGridViewの表示開始・表示終了はユーザの指示による
      (表示開始・表示終了ボタンクリック等)
    2.DataGriView内の項目・行の追加削除変更は自由にできる
    3.MDBファイルの複数ユーザ共有はない

    ほかにも明確にする必要がある項目があったらご指摘ください
違反を報告
引用返信
■34584 / ResNo.3)  Re[3]: DataObjectの使いまわし
□投稿者/ sima 一般人(2回)-(2020/11/26(Thu) 11:34:51)
  • アイコン
    No34583に返信(Vettyさんの記事)
    > >onnection(接続オブジェクト) で指定する mdb ファイルが一つなのであれば、
    > >connection を三つ作らなければならないことについて説明できないと>
    > >私は考えます。
    > 
    > 時間の流れがないという前提ならそうなのですが、
    > 質問の設定で実行して、現在3つのDataGridVieに想定どおりの内容が
    > 表示できた時点から、あらたに別のMDBファイルを使い4つめのDataGriViewに
    > 表示しようというときに、いままさに使用中の(あるいはすでに使い終え
    > たDBConectionをあらたな2つめのMDBファイル用に使いまわしできるか?
    > ということなんです。
    
    初めの質問にはそんな事は書いてませんでしたね?
    書いてないことまで想定して、返事が書けるほど私は優秀ではないので
    少し戸惑っています。
    
    大胆に言えば、十分に注意を払ってコードをお書きになるのでしたら出来な
    くはないと思います。
    が、私は怪我も火傷もしたくないのでできれば、そういう書き方はしません。
    
    使いきりのコードならそういう書き方をするかもしれませんが、後から
    変更、修正することを考えたら判りにくいコードや読みにくいコードやは
    私なら避けます。
    
    > 
    > 最初の質問の範囲内でいえば、
    > 3つのDataGridViewそれぞれに用意している3つのOleDb.OleDbCommandを
    > ひとつのOleDb.OleDbCommandで使いまわしできるのでしょうか?
    
    OleDb.OleDbConnection のインスタンスは接続先の DB(データーベース)を指す
    ためのものなので、一つのフォーム内であれば、同一の mdb ファイルを指定す
    るコネクションは一つあれば良いと考えます。
    私はそれ以上のことは書きませんでした。
    
    >>(OleDbConnection だけはひとつでいいように思いますが・・・)
    
    について、私の考えを示したもので、 OleDbCommand や OleDbAdapter やに
    ついて書いたものでないことはお分かりいただけると思います。
    
    OldDbCommand や OleDbAdapter については具体的な使い方を見ないと何とも
    言えないと考えます。
    
    ただ、扱いが込入ってくると OleDbCommand を使いまわすのは見通しが悪く
    なるおそれがあるので人には薦めません。

違反を報告
引用返信
■34587 / ResNo.4)  Re[4]: DataObjectの使いまわし
□投稿者/ Vetty 一般人(13回)-(2020/11/29(Sun) 05:45:08)
  • アイコン>初めの質問にはそんな事は書いてませんでしたね?
    >書いてないことまで想定して、返事が書けるほど私
    >は優秀ではないので少し戸惑っています。

    失礼しました。
    これ以上質問を続けるとさらに失礼を重ねることに
    なると思いますのでこれで終了したいと思います。

    ありがとうございました。
解決み!
違反を報告
引用返信
■34588 / ResNo.5)  Re[5]: DataObjectの使いまわし
□投稿者/ sima 一般人(3回)-(2020/11/30(Mon) 06:00:10)
  • アイコンNo34587に返信(Vettyさんの記事)
    > >初めの質問にはそんな事は書いてませんでしたね?
    > >書いてないことまで想定して、返事が書けるほど私
    > >は優秀ではないので少し戸惑っています。
    >
    > 失礼しました。
    > これ以上質問を続けるとさらに失礼を重ねることに
    > なると思いますのでこれで終了したいと思います。

    あのー、私は貴方が失礼なことをしたとは思っていません。
    「戸惑っています」とは書きましたけどこれは
    書いてないことまで想定して返事が書ける程優れていないと
    いうことでしかありません。
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-5]



■記事リスト / ▲上のスレッド
■34574 / 親記事)  LIstview のDataSource
□投稿者/ Vetty 一般人(9回)-(2020/11/16(Mon) 09:09:38)
  • アイコン環境/言語:[VB.net win10] 
    分類:[.NET] 

    DataGridView.DataSourceにDataTableを簡単に設定して表示できましたが、
    Listviewにはそもそも項目がないようです。
    いろいろ検索してもDataTableからRowごとにItemをひとつづつコピーして
    いるようです。

    https://loosecarrot.com/2018/07/24/336/
    にあるように、単なる表示機能としてのListviewでしかないのでしょうか?
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■34575 / ResNo.1)  Re[1]: LIstview のDataSource
□投稿者/ Hongliang 大御所(590回)-(2020/11/16(Mon) 09:33:35)
  • アイコン「単なる表示機能としてのListview」というのがどういう意味なのかよく分かりませんが、Windows FormsのListViewはバインディングはできませんね。
    // WPFのListViewならできるんですが。
違反を報告
引用返信
■34576 / ResNo.2)  Re[2]: LIstview のDataSource
□投稿者/ Vetty 一般人(10回)-(2020/11/16(Mon) 12:01:40)
  • アイコン>Windows FormsのListViewはバインディングはできませんね。

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

    > 「単なる表示機能としてのListview」というのがどういう意味なのかよく分かりませんが

    DataGridViewのようなバインディングも機能してくれたら・・・
    と思ったわけです。

    地道にコードを書いていきます。

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]






Mode/  Pass/


- Child Tree -

2021/01/27(Wed) 18:26:01 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする