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

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

記事リスト ( )内の数字はレス数
NomalC言語系で使用される書式をVBで使いたい(3) | Nomal.NET 4.5.2のVB.NETでのデスクトップ環境開発(2) | Nomalwebformでの制御(5) | Nomalリソースデザイナの開き方(11) | Nomalロジックの実現お願い(4) | NomalAppActiveが正常に機能しない。(4) | Nomaltextboxでmultilineでの改行削除について(2) | Nomalftp接続してファイルアップロード後、別フォルダにコピー(5) | NomalDataGridViewのイベント中にデータを更新するとエラーが発生(2) | Nomalフォントに登録されていない文字の検出(2) | NomalGetObjectでExcelファイルを加工するとExcelファイルが壊れる(9) | Nomaloledbでdatatableを取得するときにエラーになる(1) | Nomal作成した白黒画像をWordに貼り付けてから「図として保存」(8) | NomalVB.NetでVB6.0と同じFontを指定しても同様に印刷されない(9) | NomalDataGridViewの複数行選択で歯抜け選択を無効にしたい(2) | Nomal証券会社へのログイン(1) | Nomalユーザーフォームに埋め込んだAutoCADの変化を捉える(0) | Nomalシステムドライブ以外へのページング設定が反映されない(5) | Nomalブラウザでコピーした透過PNGを貼り付けたい(4) | Nomalforeachでループ回数を取得(2) | Nomalbitmapが保存できない(2) | Nomal特定ピクセルで画像を読み込みたい(2) | NomalDataGridViewでAlt+Enterで改行したい(2) | Nomal全角シフト中にアクセスキーが効かない(5) | NomalDataAdapter.Updateで構文エラー(6) | Nomal抽象クラスで実装したクラスの情報を知る(3) | Nomal画面遷移(モーダルとモードレス)(2) | NomalProcessクラスからbatファイル実行後、KILLできない(2) | NomalGetDirectoriesでルートを指定するとエラーになる(3) | Nomal兆億万表記の文字列を数値に変換できる?(3) | NomalLinqにおける明示的型指定の方法(3) | Nomal2つのradの数値から1つの角度を求めるコードを改善できますか?(C++)(2) | Nomalコンソールアプリで、WebView2の利用(2) | NomalEntity Frameworkは、使えるか?(2) | Nomalデータベースからのテーブル名一覧の効率的な取得方法(3) | NomalC#のlong型でオーバーフローになる(2) | Nomal正規表現のパターン表記方法(2) | NomalWebView2によるスクレ―ピング(4) | Nomalこういた物を作れますか?(2) | Nomalツールボックスにtableadapterが表示されない(1) | NomalC# Chart X軸上のグラフ表示(3) | NomalVB.NETでBluetoothデバイスの電池残量を取得する方法(3) | Nomalクリスタルレポート 明細部のサブレポート(0) | Nomal重なったPictureBox同士を透過する方法(7) | NomalWindowsフォームデザイナについて(3) | Nomalvb.netでExcelファイル操作(7) | NomalVB.NETからcmdでpingを実行した時の結果(5) | Nomalvb.netでのExcelファイルそうさ(2) | Nomalキーボード+バーコードでキーボード入力を無効にしたい(6) | NomalVB2022でクリスタルレポートが開けない(2) | Nomalファイルとして配置したマニフェストを優先したい(2) | NomalTabPageの背景色(5) | NomalC#でJpeg圧縮のTiffファイルを作成したい(4) | Nomalエクセルのみ監視ができない(2) | NomalDataGridViewのVirtualModeを有効した場合の実装方法(4) | NomalExcelの数値 -> 日付みたいな関数?(2) | Nomaljumbo icon(256x256)が存在するか知る方法(6) | NomalDrawstringでの透過文字作成(3) | NomalSpinWait()を使う理由(2) | Nomalantecedentってなんですか?(2) | Nomalワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る(3) | Nomalstyle.displayだと効率悪いから違うやり方をしたいです。(5) | Nomalテーブルを順番通りに直すプログラムを外部で読み込めるようにしたいです。(4) | NomalJSONの複雑な入れ子内部の値を取りたい。(3) | Nomalグリッド表示レコードをJSONに変換(5) | Nomalシステム時計の設定(3) | NomalSeleniumで開いているページのTableを編集したい(5) | Nomalソケット通信入門 ひらがな(4) | NomalVisual Basicでエラーが出る(3) | Nomalインストーラにて、ローミングフォルダにファイルを配置したい(0) | NomalRGB値の所得(2) | Nomal時間変数(文字列)の扱い(4) | NomalVB.net からAccessDBへの接続(2) | Nomal画像のスクロール(6) | Nomalタイマーの一括処理(6) | NomalTreeViewとDataGridViewのスクロールを同期(シンクロ)させたい(4) | NomalTreeViewの現在位置とDataGridViewの現在位置を合わせたい(7) | NomalPictureBoxの画像を連続保存(11) | NomalDataGridViewの特定セルにボタンを配置する方法(5) | Nomalフォームのリサイズ時にDataGridViewが再描画されない(4) | NomalテキストボックスのValidatingイベントよりも先に発生するボタン発生イベントは何でしょう?(2) | NomalPDFをフォーム上で表示させる方法につきまして(4) | NomalDataGridViewの行ヘッダーに行番号を表示した時のエラー(4) | Nomal継承元フォームで各フォームのボタン動作を検知したい(3) | Nomalラジオボタンの一括設定(7) | NomalWindowsエクスプローラからのドラッグ&ドロップ(2) | NomalRichTextBoxのテキストをpictureBOXへ(12) | Nomalクリックイベントでexeを作成できるか(2) | Nomalアセンブリ情報が載らない(1) | Nomal先頭に空白(スペース)があるファイルを読み込んでRichTextBoxへ書き出すとスペースが削除える(6) | Nomalc#で日付型の定義の仕方で質問があります。(2) | NomalExcel Com オブジェクトの増殖(13) | Nomal二次元マップから値の取得(1) | NomalアプリでHDMIへ出す解像度を変えたい(4) | Nomal列車の時間ごとの位置情報を表示したいです。(2) | Nomal画像の中心を基点に回転(4) | NomalDataGridViewのドロップダウンリストの表示と選択後の値を分けたい(1) | NomalタッチキーボードでIMEを自動で切替えたい(6) | NomalVSTOによるエクセルアドインのインストーラーでのアップデート(1) | NomalMP4動画を再生する方法について(5) |



■記事リスト / ▼下のスレッド
■35696 / 親記事)  C言語系で使用される書式をVBで使いたい
□投稿者/ かぼちゃプリン 一般人(1回)-(2026/02/19(Thu) 11:07:00)
  • アイコン環境/言語:[VB.NET] 
    分類:[.NET] 

    VS2022
    .NET Framework 4.8

    VBで、C言語系で使用される"%03d"(整数を0埋め3桁にする)のような書式が使えるメソッドは.NET Frameworkに用意されていますか?
    または、VB用の書式指定子に変換してくれるようなメソッドはありますか?
    VBだったら、例えばint変数.ToString("000")のような書式になると思います。

    実は、他システムから呼び出されるプログラムをVBで作成しているのですが、
    引数に"%03d"の書式指定子が含まれていて、これをもとに処理結果を出力する必要があります。
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■35697 / ResNo.1)  Re[1]: C言語系で使用される書式をVBで使いたい
□投稿者/ 魔界の仮面弁士 大御所(1593回)-(2026/02/20(Fri) 22:17:28)
  • アイコンNo35696に返信(かぼちゃプリンさんの記事)
    > VBで、C言語系で使用される"%03d"(整数を0埋め3桁にする)のような書式が使えるメソッドは.NET Frameworkに用意されていますか?
    > VBだったら、例えばint変数.ToString("000")のような書式になると思います。

    .NET Framework には無いので、正規表現で分解して自前解析でしょうかね。

    C++ ランタイムである msvcrt.dll の sprintf 関数や snprintf 関数とか、
    それらの Unicode 対応版とかを呼ぶってのが実装的には確実なんですが、
    .NET Framework ……というか IL ってのが、そもそも C 言語でいうところの
     int sprintf(char* buf, const char* fmt, ...);
    の可変長引数「...」の呼び出しをサポートしていないので、
    DllImport (Declare) するなら引数の数ごとにオーバーロードを用意するしかないという罠。

    C# の __arglist、.NET の RuntimeArgumentHandle も、managed な引数向けであって
    「...」に対する P/Invoke 呼び出しには対応していないんですよね。
    (これは、VB の ParamArray や C# の params とは別の仕組み)


    C++/CLI なら呼べるので、それでブリッジ DLL を作る手はあるけれど、公開関数を
     static String^ Format(String^ fmt, ... array<Object^>^ args)
    としたところで、Object[] を va_list へ変換する部分は自前実装しかないという罠。


    いずれにせよ、可変長引数の扱いが厄介なのですが、引数の数がさほど膨大になることもないでしょうし
    ひとまず 10 個まで渡せるようにしてみました。


    Imports System.Runtime.InteropServices
    Imports System.Text

    Public Class Form1

      ' VB では可変引数を直接宣言できないため、引数を固定して宣言
      ' arg0, arg1, arg2, …の数は、20個でも30個でも必要な分だけ定義する
      ' ここでは例として10個の引数をサポートする関数を宣言
      <DllImport("msvcrt.dll", EntryPoint:="_snwprintf", CharSet:=CharSet.Unicode, CallingConvention:=CallingConvention.Cdecl)>
      Private Shared Function _snwprintf(
        ByVal buffer As StringBuilder,
        ByVal count As Integer,
        <MarshalAs(UnmanagedType.LPWStr)> ByVal format As String,
        ByVal arg0 As IntPtr, ByVal arg1 As IntPtr, ByVal arg2 As IntPtr, ByVal arg3 As IntPtr, ByVal arg4 As IntPtr,
        ByVal arg5 As IntPtr, ByVal arg6 As IntPtr, ByVal arg7 As IntPtr, ByVal arg8 As IntPtr, ByVal arg9 As IntPtr
      ) As Integer
      End Function


      ' VB 側の printf ラッパー(最大10引数)
      Friend Function CPrintf(format As String, ParamArray args As Object()) As String
        Dim capacity As Integer = 256
        Dim buffer As New StringBuilder(capacity)

        ' 固定 10 引数に展開するための配列
        Dim ptrs(9) As IntPtr
        Dim allocatedStrings As New List(Of IntPtr)()

        Try
          For i = 0 To Math.Min(args.Length - 1, 9)
            If args(i) Is Nothing Then
              ptrs(i) = IntPtr.Zero
            ElseIf TypeOf args(i) Is String Then
              ' 文字列はアンマネージドの Unicode 文字列に変換してそのアドレスを取得
              Dim p As IntPtr = Marshal.StringToHGlobalUni(DirectCast(args(i), String))
              ptrs(i) = p
              allocatedStrings.Add(p)
            Else
              Dim val As Long = Convert.ToInt64(args(i)) ' 数値の場合の処理
              If IntPtr.Size = 8 Then
                ' x64なら 8byte そのまま積んでOK
                ptrs(i) = New IntPtr(val)
              Else
                ' x86なら 32bitに切り詰める(制限事項:%lld 等は非対応)
                ' ここで 32bit 範囲外なら例外を出すか、下位 32bit のみを渡す
                ptrs(i) = New IntPtr(CInt(val And &HFFFFFFFFL))
                ' double などの浮動小数点は非対応(%f 等は非対応)だが
                ' どうしても渡したいなら、該当引数の定義を As Double にしておく手もアリ
              End If
            End If
          Next

          ' 1回目の呼び出し(サイズ確認)
          ' 可変長引数はサポートされていないため、10個の引数を固定で渡す
          Dim required As Integer = _snwprintf(
            buffer, capacity, format,
            ptrs(0), ptrs(1), ptrs(2), ptrs(3), ptrs(4),
            ptrs(5), ptrs(6), ptrs(7), ptrs(8), ptrs(9)
          )

          ' バッファ不足時の再試行
          ' msvcrt/_snwprintf の仕様により、エラー時は -1 を返す場合と必要サイズを返す場合があるため、両方のケースを考慮する
          If required < 0 OrElse required >= capacity Then
            capacity = If(required < 0, 1024, required + 1)
            buffer = New StringBuilder(capacity)
            _snwprintf(
              buffer, capacity, format,
              ptrs(0), ptrs(1), ptrs(2), ptrs(3), ptrs(4),
              ptrs(5), ptrs(6), ptrs(7), ptrs(8), ptrs(9)
            )
          End If

        Finally
          ' 確保したメモリを解放
          For Each ptr In allocatedStrings
            Marshal.FreeHGlobal(ptr)
          Next
        End Try

        Return buffer.ToString()
      End Function

      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim s As String = CPrintf("Hello %s %d %X %03d World. ", "魔界の仮面弁士", 123, 255, 78)

        ' "Hello 魔界の仮面弁士 123 FF 078 World. "
        MessageBox.Show(s)
      End Sub
    End Class
違反を報告
引用返信
■35699 / ResNo.2)  Re[2]: C言語系で使用される書式をVBで使いたい
□投稿者/ 魔界の仮面弁士 大御所(1595回)-(2026/02/20(Fri) 22:46:27)
  • アイコンNo35697に追伸(魔界の仮面弁士の記事)
    > .NET Framework には無いので、正規表現で分解して自前解析でしょうかね。

    その「自前解析」で再実装された C スタイル書式文字列対応実装ソースが
    下記にあります。ライブラリも NuGet できます。
    https://github.com/adamhewitt627/sprintf.NET/tree/master


    上記 README で Adam 氏も書かれていますが、swprintf を
    直接 P/Invoke するのって、そこそこハードルが高いんですよね…。
    ( No35697 はそれを無理矢理呼んでいるわけですが )
違反を報告
引用返信
■35700 / ResNo.3)  Re[3]: C言語系で使用される書式をVBで使いたい
□投稿者/ かぼちゃプリン 一般人(2回)-(2026/02/21(Sat) 13:44:10)
  • アイコン魔界の仮面弁士様、ありがとうございました。
    C言語系の書式を使用するとなると、結構大がかりなのですね。
    また、ライブラリのご紹介もありがとうございました。

    実際問題として、本当にこの方法で対応すべきかどうかは検討します。
解決み!
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35693 / 親記事)  .NET 4.5.2のVB.NETでのデスクトップ環境開発
□投稿者/ taros 一般人(1回)-(2026/02/15(Sun) 20:49:07)
  • アイコン環境/言語:[Windows10 64Bit VB.NET .NET Framework4.5.2 VisualStudio Community 2017] 
    分類:[.NET] 

    VB.NETでデスクトップ環境を作りたくて作ってて、GNOME2とMacOSX10.1のAquaを合わせたスタイルなのですが、VBを触ってまだ4から5時間程度で、ai(Gemini)にコードを書かせて作りました。ただ、容量削減のためにウィンドウを共通化して、それを他のFormウィンドウでも流用したいのですが、出来ないのです。全くわからないので教えて下さい
イメージ
1771156147.zip
/19KB
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35694 / ResNo.1)  Re[1]: .NET 4.5.2のVB.NETでのデスクトップ環境開発
□投稿者/ 魔界の仮面弁士 大御所(1591回)-(2026/02/17(Tue) 10:09:44)
  • アイコンNo35693に返信(tarosさんの記事)
    > VB.NETでデスクトップ環境を作りたくて作ってて、

    ・起動すると、メインモニターが全画面表示で覆いつくされますが、マルチモニター環境の場合
     他の画面には何も表示されないようです。
     シングルモニター以外の環境も考慮する必要があるかもしれません。
     ちなみに Screen.AllScreens を使うことで、他の画面の座標情報を得られます。

    ・[設定]-[ショートカット]で OpenFileDialog2(ofdShortcut) が開きますが、
     ここでキャンセルを押したとしても、続けて OpenFileDialog1 が開いてしまいます。
     そもそも、2 連続でダイアログを表示させているのは何故ですか?
     ふたつのダイアログで、ファイルの種類ボックスの有無が異なっている点も謎ですし、
     いずれのタイトルも、単に "開く" としか書かれておらず、機能の意図が分かりにくいです。
     ショートカットアイコンの描画処理は良くできていますね。

    ・設定パネルを開いている最中にも、左上のアイコンを押せてしまいますね。
     設定パネルを閉じるまではアイコンを押せないようにするか、または
     アイコンを押した時点で設定パネルを閉じた方が良いのでは?


    > 容量削減のためにウィンドウを共通化して、それを他のFormウィンドウでも流用したいのですが、出来ないのです。
    いや、コードを見せてもらわなければ、指摘できないですよ…。
    実行可能ファイルを解析して中のソースを想像しろってことですか? (^_^;)
違反を報告
引用返信
■35695 / ResNo.2)  Re[2]: .NET 4.5.2のVB.NETでのデスクトップ環境開発
□投稿者/ 魔界の仮面弁士 大御所(1592回)-(2026/02/17(Tue) 10:23:20)
  • アイコンNo35693に返信(tarosさんの記事)
    > 環境/言語:[Windows10 64Bit VB.NET .NET Framework4.5.2 VisualStudio Community 2017] 
    そもそも.NET Framework 4.5.2のサポートは、2022年4月26日に終了しています。

    既存アプリのメンテナンスならともかく、
    新規開発で選択すべきフレームワークではありません。

    .NET Framework 4.8 や 4.8.1 (最低でも 4.6.2 以降) に切り替えるか、もしくは
    .NET Framework ではなく、その後継の .NET 8 などへの乗換をおすすめします。
    https://learn.microsoft.com/ja-jp/visualstudio/releases/2017/vs2017-compatibility-vs

    できれば VS2017 のままフレームワークバージョンを上げようとするのではなく、
    VS2026 の導入を検討してみてください。
    https://artitech.co.jp/post-10947/


    No35694に追記(魔界の仮面弁士の記事)
    > いや、コードを見せてもらわなければ、指摘できないですよ…。
    > 実行可能ファイルを解析して中のソースを想像しろってことですか? (^_^;)

    「容量削減のためにウィンドウを共通化」「他のFormウィンドウでも流用したい」という
    元質問が、どういう意味なのか読み切れていないのですが、
    現状の実装がどうなっているのか、とりあえずざっくりとバイナリ解析。

    ・プロジェクト名に小数点やバージョン番号を含めない方が良いです。
     このコードだと、名前空間が「dotNET_Desktop_Panel_0._1._0」のように
     不自然なものになってしまっています。

    ・コントロールの名前は、コードを書き始める前に設定しておくべきです。
     後から変更するとイベントハンドラの名前と一致しなくなり、コードが分かりにくくなりがちです。

    ・Cllose ボタンは Close ボタンのスペルミスでしょうか? (Collapse の意図では無さそう)

    ・イベントハンドラの名前を見直しましょう。後から見たときに混乱の元です。
     Sub PictureBox2_Click は、PictureBox2 ではなく「startButton という名前の PictureBox」の Click に割り当てられています。
     Sub ProgressBar1_Click は、ProgressBar1 ではなく「pbRam という名前の ProgressBar」の Click に割り当てられています。
     Sub Button1_Click の処理は、どこからも呼び出されていないように見えます。
     Sub Button1_Click_1 は、Button1 の Click イベントに割り当てられています。
     Sub Label4_Click_1 は、Label4 の Click イベントに割り当てられていますが
     Sub Label4_Click は、Label4 ではなく lblRamUsage の Click になっています。
     Sub Panel2_Paint_1 は、Panel2 の Paint イベントに割り当てられていますが、
     Sub Panel2_Paint は、どこからも呼び出されいない状態です。


    ・空のイベントハンドラのうち、「誤生成したもの」は無駄なので削除しましょう。
     (今後実装予定だが、まだ処理を書いていないという段階ならば、そのまま残しても問題ありません)
     Sub Label4_Click は中身が空です。(lblRamUsage.Click から呼ばれる)
     Sub Form1_Load は中身が空です。(dotNETDesktopPanel.Load から呼ばれる)
     Sub lblVersion_Click は中身が空です。(lblVersion.Click から呼ばれる)
     Sub monthCalendar1_DateChanged も空です。(monthCalendar1.DataChanged)
     Sub netdeskPanelBottom_Paint も空。(netdeskPanelBottom.Paint)
     Sub OpenFileDialog2_FileOk も空。(ofdShortcut.FileOk)
     Sub Panel2_Paint も空です。(これはどこからも呼ばれていない)
     Sub panelTitleBar_Paint も空です。(panelTitleBar.Paint)
     Sub ProgressBar1_Click も空です。(pbRam.Click)
     Sub SelectExe_Click も空です。(SelectExe.Click)
     Sub ShortcutSettings_Paint も空。(ShortcutSettings.Paint)
     Sub startmenuPanel_Paint も空。(startmenuPanel.Paint)
違反を報告
引用返信

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35687 / 親記事)  webformでの制御
□投稿者/ イクイノックス 一般人(1回)-(2025/09/24(Wed) 11:34:57)
  • アイコン環境/言語:[Webform、C#、.NetFramework4.8.1] 
    分類:[ASP.NET] 

    通常、「更新」ボタンなどを画面デザインで配置して実装する場合、
    クライアントスクリプトで記述するconfirmメソッドはOnClickイベントで実装すると思います。

    gridviewのAutogenerate系のボタンやコマンドコントロールで「自動的」に実装される「ボタン」は画面デザインの時点ではhtmlソース表示しても記述されてないため、OnClickでの制御ができません。
    そのため、postback後に制御する必要がありますが、入力チェック→alertでメッセージ表示は、サーバー側の処理が終わった後に出すイメージで問題ありませんが、confirmはpostback後にRegisterClientScriptBlockで実行するように処理しても、
    サーバー側での更新処理が全部終わってからメッセージが出力される挙動になるため、確認メッセージの用をなしていません。

    OnClickに該当する処理をpostback前にhtmlソースに書かれてなくても無理やり挙動させる、あるいはpostback後の「更新」「削除」などのイベント処理の冒頭でconfirmを出し、ok:実行、キャンセル:e.cancel=true等で中止
    というような処理をするのは不可能なのでしょうか?
    ご存じの方ご教示ください。

    多分VBでもC#でも同じような処理になると思いますが、
    一応サーバーサイドはC#で記述してます。

違反を報告
引用返信

▽[全レス5件(ResNo.1-5 表示)]
■35688 / ResNo.1)  Re[1]: webformでの制御
□投稿者/ kiku 一般人(3回)-(2025/09/24(Wed) 15:25:36)
  • アイコンNo35687に返信(イクイノックスさんの記事)
    > そのため、postback後に制御する必要がありますが、入力チェック→alertでメッセージ表示は、サーバー側の処理が終わった後に出すイメージで問題ありませんが、confirmはpostback後にRegisterClientScriptBlockで実行するように処理しても、
    > サーバー側での更新処理が全部終わってからメッセージが出力される挙動になるため、確認メッセージの用をなしていません。

    サーバーサイドの処理を2つに分ければ良いのではないでしょうか?
    1.入力チェックのみを行う処理(入力チェックエラー)
    2.登録のみを行う処理(登録時のエラー)

    当方、WebFormアプリの作成未経験のため、概念的な回答のみになります。
違反を報告
引用返信
■35689 / ResNo.2)  Re[2]: webformでの制御
□投稿者/ イクイノックス 一般人(2回)-(2025/09/24(Wed) 16:05:24)
  • アイコンNo35688に返信(kikuさんの記事)
    > ■No35687に返信(イクイノックスさんの記事)
    >>そのため、postback後に制御する必要がありますが、入力チェック→alertでメッセージ表示は、サーバー側の処理が終わった後に出すイメージで問題ありませんが、confirmはpostback後にRegisterClientScriptBlockで実行するように処理しても、
    >>サーバー側での更新処理が全部終わってからメッセージが出力される挙動になるため、確認メッセージの用をなしていません。
    >
    > サーバーサイドの処理を2つに分ければ良いのではないでしょうか?
    > 1.入力チェックのみを行う処理(入力チェックエラー)
    > 2.登録のみを行う処理(登録時のエラー)
    >
    > 当方、WebFormアプリの作成未経験のため、概念的な回答のみになります。

    1も2もalertなので表示できます。

    問題はconfirmのほうです。
    具体的に言うと、
    「削除」ボタンはWebform側でサーバーサイドで自動的に生成される感じで、htmlで表現されていません。
    なので、「削除」押下→即postback→(ここからサーバーサイド)page_load→grid_RowCommand→grid_RowDeletingの順にイベントが発生します。

    grid_RowCommandでは「新規作成」「更新」、「削除」いずれか発生したか判定できます。page_loadではpostbackしたかどうかしか判定できないようで何ボタンが押されたかわかりません。

    grid_RowCommandで「削除」のときconfirmを出すみたいな処理はできますが、
    それはgrid_RowDeletingの処理、つまり削除処理が実行された後に表示されるので、confirmの操作が反映できません。
    おそらくpage_loadで出せばいけるのかもしれませんが、「削除」であることが判定できないためconfirmを出す処理を組み込めません。

    こんな状況です。
違反を報告
引用返信
■35690 / ResNo.3)  【報告】No35687 の投稿はマルチポストです
□投稿者/ (報告) 一般人(1回)-(2025/09/24(Wed) 16:24:14)
  • アイコンNo35687 の投稿はマルチポストです。もし元記事の投稿者にマルチポストの心当たりがない場合は、すぐに返信でお知らせください。

    ●マルチポストされている場所
    https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31022

    ----------
    この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのルールについて」をお読みください。

    ●書き込みのルールについて
    https://dobon.net/vb/bbs/index.html
違反を報告
引用返信
■35691 / ResNo.4)  Re[3]: webformでの制御
□投稿者/ kiku 一般人(4回)-(2025/09/24(Wed) 17:12:59)
  • アイコンNo35689に返信(イクイノックスさんの記事)
    > ■No35688に返信(kikuさんの記事)
    >>■No35687に返信(イクイノックスさんの記事)
    > 問題はconfirmのほうです。
    > 具体的に言うと、
    > 「削除」ボタンはWebform側でサーバーサイドで自動的に生成される感じで、htmlで表現されていません。
    > なので、「削除」押下→即postback→(ここからサーバーサイド)page_load→grid_RowCommand→grid_RowDeletingの順にイベントが発生します。
    >
    > grid_RowCommandでは「新規作成」「更新」、「削除」いずれか発生したか判定できます。page_loadではpostbackしたかどうかしか判定できないようで何ボタンが押されたかわかりません。

    grid_RowCommand処理を下記にしたらできませんか?
    1.grid_RowCommandで「削除」ボタンが押下されたか判断。
    2.削除ボタンが押されたら、削除ボタン用入力チェック画面へ遷移。
    3.削除ボタン用入力チェック画面では、confirmのみ表示する。
    4.confirmでOKなら、削除処理画面へ遷移。
    5.confirmでcancelなら、元の画面へ遷移し、削除された表を表示。
違反を報告
引用返信
■35692 / ResNo.5)  Re[4]: webformでの制御
□投稿者/ イクイノックス 一般人(3回)-(2025/10/02(Thu) 11:28:07)
  • アイコンNo35691に返信(kikuさんの記事)
    > ■No35689に返信(イクイノックスさんの記事)
    >>■No35688に返信(kikuさんの記事)
    > >>■No35687に返信(イクイノックスさんの記事)
    >>問題はconfirmのほうです。
    >>具体的に言うと、
    >>「削除」ボタンはWebform側でサーバーサイドで自動的に生成される感じで、htmlで表現されていません。
    >>なので、「削除」押下→即postback→(ここからサーバーサイド)page_load→grid_RowCommand→grid_RowDeletingの順にイベントが発生します。
    >>
    >>grid_RowCommandでは「新規作成」「更新」、「削除」いずれか発生したか判定できます。page_loadではpostbackしたかどうかしか判定できないようで何ボタンが押されたかわかりません。
    >
    > grid_RowCommand処理を下記にしたらできませんか?
    > 1.grid_RowCommandで「削除」ボタンが押下されたか判断。
    > 2.削除ボタンが押されたら、削除ボタン用入力チェック画面へ遷移。
    > 3.削除ボタン用入力チェック画面では、confirmのみ表示する。
    > 4.confirmでOKなら、削除処理画面へ遷移。
    > 5.confirmでcancelなら、元の画面へ遷移し、削除された表を表示。

    それだと処理が複雑になりすぎるので、
    AutoGenerateDeleteボタンによる実装を断念し、

    テンプレートフィールドのアイテムとしてボタンを定義して、
    1.OnClientClickでConfirm表示(returnを返す形)
    2.CommandNameプロパティーをDeleteに設定

    これで戻り値がfalseの時は処理中止、trueの時はgrid_RowDeleting発動(=行削除実行)となります。

    結局、AutoGenerateDeleteボタンだと即postbackになるようにロジックが自動生成してしまうので、grid_RowCommandの時点では手遅れ(page_loadが先に発生してしまうので)、なのでpostback前にConfirmのように処理分岐が必要なJSの処理実行するには上記のような方法しかないことがわかりました。

    即postbackに必ずなってしまう使用がいまいちとは思いつつ、最早WebformはCore系で廃止されているため、文句言っても仕様改善は期待できません。
    テンプレートフィールドを使うのが無難と判断しました。




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

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



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35652 / 親記事)  リソースデザイナの開き方
□投稿者/ な55 一般人(1回)-(2025/02/25(Tue) 10:59:44)
  • アイコン環境/言語:[Visual Studio 2022のvb] 
    分類:[.NET] 

    初めて質問させていただきます。
    先程、投稿したのですが、消えてしまったみたいで、再度投稿します。

    Visual Studio 2022 Version 17.13.1で、

    リソースにbmpを複数入れて、PictureBoxに表示したいのですが、

    リソースデザイナをどうやって表示させるのかがわかりません。

    よろしくお願いいたします。
違反を報告
引用返信

▽[全レス11件(ResNo.7-11 表示)]
■35659 / ResNo.7)  Re[7]: リソースデザイナの開き方
□投稿者/ 魔界の仮面弁士 大御所(1586回)-(2025/02/26(Wed) 10:00:58)
  • アイコン2025/02/26(Wed) 10:49:25 編集(投稿者)

    No35658に返信(な55さんの記事)
    掲示板の利用ルールに
    >>> 半角カナは使用しないでください。文字化けの原因になります。
    と記載がありますので、次回以降ご留意ください。
    Shift_JIS だと 0xA1-0xDF の範囲の文字がそれにあたります。
    (気づきにくいですが、投稿文に Halfwidth Katakana Middle Dot が混入していますね)


    > Form1のLoadプロシージャーに
    > PictureBox1.Image=My.Resources.tokyo
    > とコードを書くと、My.Resorces.tokyoの下に赤なみ線が付いてしまいます。
    > 「BC30311 型'Byte()'の値を'Image'に変換できません。」

    従来版では、画像リソースは、実装上は Image オブジェクトを返すプロパティなのですが
    現状は、As Byte() なプロパティであるということなのですね。それはあまりに酷いですね。

    ImageConverter クラスを経由させれば、As Byte() から As Image にすることはできますが…。
    https://atmarkit.itmedia.co.jp/ait/articles/0706/07/news139.html


    As Byte() のままではデザイン時に画像リソースを Image プロパティに指定できなくなりますし、
    なにより今回のような破壊的な仕様変更だと、またどこかで As Image に戻る可能性もありそう。


    今、手元にバージョン 17.9.2 な環境しか無いので試せませんが、
    レガシ版のリソースエディターで画像を追加した場合も同じですか?
    また、Visual Studio 2022 17.14.0 Preview 1.1 だとどうでしょうか?

    あるいは下記のように、resx ファイルを XML として手動編集してみたら改善しますか?
    https://developercommunity.visualstudio.com/t/Drag-n-drop-images-into-new-Resource-Exp/10728068


    前回紹介した URL で、Microsoft 社の melytcさんが GitHub Discussions #9474 に投稿されていましたが
    不自然な点や使いにくい部分については、適宜フィードバックを投稿するなり、
    同種の投稿に対して vote up しておいた方が良いかと思います。
    ユーザーからの vote が多い案件は、改修優先度があがりやすくなります。


    Image は IDisposable であるにもかかわらず、My.Resources のプロパティは
    「取得するたびに、新しい Image インスタンスを生成してしまう」
    という、まるでメソッドのような動作をしてくるので、
    時には Byte 配列を返して欲しいと考えることもありますが、
    流石に、Image を返す機能が失われているのは改悪過ぎる…。
違反を報告
引用返信
■35660 / ResNo.8)  Re[8]: リソースデザイナの開き方
□投稿者/ な55 一般人(5回)-(2025/02/26(Wed) 10:45:28)
  • アイコン>Shift_JIS だと 0xA1-0xDF の範囲の文字がそれにあたります。
    >(気づきにくいですが、投稿文に Halfwidth Katakana Middle Dot が混入していますね)

    ・・・ですね。失礼しました。

    「管理対象リソースエディター(レガシ)」

    で、「PictureBox1.Image=My.Resources.tokyo」
    出来ました。

    レガシ版のリソースエディタの方が、bmpをWindowsのエクスプローラーからドラッグ&ドロップできて、いいですね。

    その他、ご指導いただいたやり方は今の私にはハードルが高すぎて、やっていません。
    もう少し理解が進んで、からやってみます。

    今回の件、いろいろありがとうございました。
解決み!
違反を報告
引用返信
■35661 / ResNo.9)  Re[9]: リソースデザイナの開き方
□投稿者/ 魔界の仮面弁士 大御所(1587回)-(2025/02/26(Wed) 13:11:29)
  • アイコン2025/02/26(Wed) 13:14:09 編集(投稿者)

    No35660に返信(な55さんの記事)
    > 「管理対象リソースエディター(レガシ)」
    暫くは、旧版のリソースエディターを使うことになりそうですね。
    同ダイアログの「既定値として設定」で既定のエディタを変更しておいても良いかも。

    ちなみに、VS2022 の旧バージョンでは
    「マネージド リソース エディター」と表記されていました。

    > その他、ご指導いただいたやり方は今の私にはハードルが高すぎて、やっていません。
    現在手元に環境が無いので確認できませんが、
    下記に掲載された画像(英語版、簡体中国語版)を見る限り、
    Image リソースを追加する際に、格納形式を指定するための
    ドロップダウンリスト欄があるように見えます。
    https://developercommunity.visualstudio.com/t/Cannot-add-images-to-resx/10745414
    https://developercommunity.visualstudio.com/t/After-updating-Visual-Studio-Community-2/10854404


    > 「PictureBox1.Image=My.Resources.tokyo」
    直近でも、画像リソースに関する別件の不具合報告が挙がっていました。
    文章は英語ですが、投稿者は日本人っぽい。
    https://developercommunity.visualstudio.com/t/VS2022-Unable-to-add-image-resource-to-/10843371

    中の人は、VS2022 version 17.12 で修正済みと報告しておられるものの、
    いまだに、VS2022 version 17.13.x 系でも問題が多いようで。
    https://developercommunity.visualstudio.com/t/Cannot-add-Image-to-be-of-type-Bitmap-as/10725066
    https://developercommunity.visualstudio.com/t/Can-not-browse-images-in-the-new-Resourc/10681028
    https://developercommunity.visualstudio.com/t/17111-ResourceExplorer-fails-to-load/10729675


    > もう少し理解が進んで、からやってみます。
    Visual Studio そのものの不具合に関する質問であれば、
    公式 X および開発コミュニティにて質問を受け付けているようです。

    https://twitter.com/VisualStudio
    https://developercommunity.visualstudio.com/VisualStudio

    既存の提案や報告で、「自身も同じ問題で困っている」というものがあれば、
    ぜひ、vote up ボタンを押して投票しておきましょう。

解決み!
違反を報告
引用返信
■35676 / ResNo.10)  Re[10]: リソースデザイナの開き方
□投稿者/ くるり 一般人(1回)-(2025/04/16(Wed) 22:11:00)
  • アイコン同じ問題で悩んでいたので、非常に参考になりました。
    解決済みでしたが、一応、以下のような手法でできたので、ご参考までに。

    Dim imgconv As New ImageConverter()
    PictureBox1.Image = CType(imgconv.ConvertFrom(My.Resources.tokyo), Image)

    まとめ
    ・ソリューションエクスプローラーで「すべてのファイルを表示」を
     ONにしないとリソースの追加ができない。
    ・My.Resourcesから取得した画像はByte配列なので
     ImageConverterでImageに変換する必要がある。
    ・今後、バージョンアップなどでMy.Resourcesから取得した画像が
     Image型に変更となる可能性があり、その場合はImageConverterを
     介すと逆に不具合が生じるリスクがある。

    試した環境
    ・Framework:.Net 8.0
    ・言語:VB.NET
    ・Visual Studioのバージョン:17.13.6
     
解決み!
511×108 => 250×52
イメージ
1744809060.png
/9KB
違反を報告
引用返信
■35686 / ResNo.11)  Re[11]: リソースデザイナの開き方
□投稿者/ くるり 一般人(3回)-(2025/09/22(Mon) 18:01:23)
  • アイコン現在のバージョンでは
    PictureBox1.Image = My.Resources.tokyo
    で、問題なさそうです。

    試した環境
    ・Framework:.Net 8.0
    ・言語:VB.NET
    ・Visual Studioのバージョン:17.14.15

    解決済みでしたが、状況が変わったのでご参考までに。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-9] [10-11]



■記事リスト / ▲上のスレッド
■35678 / 親記事)  ロジックの実現お願い
□投稿者/ あばば無人君 一般人(2回)-(2025/07/22(Tue) 21:24:46)
  • アイコン環境/言語:[Windows10 Home(19045.5917) 64bit、.NetFramework_4.8.1] 
    分類:[.NET] 

    約1年半ぶりの投稿となります。宜しくお願いします。

    掲題の件ですが、以下の仕様を実現するロジックを組むorヒントが欲しいです。
    (ロジックなんて自分で考えろ!と言われるのは百も承知ですが、
    この件に10Hほど掛けても未だ光明が見えず、致し方なくの投稿です)

    ※書き込みのルール「丸投げした投稿」に該当するのでしたらご指摘ください。
     諦めます。


    ではここから仕様

    以下のカラムを持つDataTable「dtSyuyakumae」があります。
    全カラム数値で、後述のデータパターン(集約前)の値が入っています。
    ・親分類
    ・子分類
    ・孫分類
    ・他分類

    これを以下のクラスに格納してListに積みたいのですが、その際に
    「親子孫の値に0が含まれるなら複数行を集約&空値にしてクラスにセットする」
    「ただし他分類が異なるならそれぞれの行でクラスにセットする」
    というのが条件になります。
    (言葉では分かりにくいと思うのでデータパターン(集約後)をご確認下さい)

    クラス
    private class BunruiInfo
    {
    /// <summary>親分類</summary>
    public string OBunrui { get; set; } = string.Empty;
    /// <summary>子分類</summary>
    public string KBunrui { get; set; } = string.Empty;
    /// <summary>孫分類</summary>
    public string MBunrui { get; set; } = string.Empty;
    /// <summary>他分類</summary>
    public string HBunrui { get; set; } = string.Empty;
    }

    処理部分
    private void button1_Click(object sender, EventArgs e)
    {
    // このDataTableが集約前のデータa〜jいずれかとなる
    DataTable dtSyuyakumae = GetSyuyakumaeData();

    // このリストに集約後のデータを積みたい
    var bunruiList = new List<BunruiInfo>();

    ★ここで集約するロジックが実現できない!★


    }


    パッと見だと実現できそうな感じがするのですが、いざやってみると
    「あちらを立てればこちらが立たず」な状態となってしまい、
    どうにもならなくなったのでご助力を依頼している状態です。

    ロジックの実現お願いなど「ふざけるな!」と言われそうで恐縮ですが
    自分(と周りのメンバー)ではどうにもできないのでご協力の程、お願い致します。


    ここからデータパターン
    ※インデントを調整していますが等幅フォントでないと正しく表示されないかも。
     お手数ですがメモ帳などのテキストエディタに張り付けてご確認ください。

      集約前                 集約後
    a  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1          1
      1   0   0   1


    b  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1       1
      1   1   0   1


    c  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1   1   
      1   1   1   0


    d  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   0   1         1   1       1
      2   0   0   1         2          1


    e  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   0   1         1   1       1
      1   2   0   1         1   2       1


    f  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1   1   1
      1   0   0   2         1          2


    g  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   0   0   2         1          2
      1   1   0   1         1   1       1
      1   1   1   1         1   2       1
      1   2   0   1


    h  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1   1   1
      0   0   0   2                   2


    i  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      0   0   0   2                   2
      1   1   1   1         1   1   1   1
      2   0   0   3         2          3
      2   1   1   2         2   1   1   2


    j  親分類 子分類 孫分類 他分類   →   親分類 子分類 孫分類 他分類
      1   1   1   1         1   1   1   1
      1   2   0   1         1   2       1

違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■35679 / ResNo.1)  Re[1]: ロジックの実現お願い
□投稿者/ おき 一般人(1回)-(2025/07/23(Wed) 10:34:17)
  • アイコンNo35678に返信(あばば無人君さんの記事)

    イ.
    データパターンcの入出力が、文章で記述されたルールと矛盾しているように見えます。
    「データパターンc」か「文章で記述されたルール」かどちらかが誤っていますか?

    ロ.
    3入力1出力のデータパターンを最低1つは用意した方が良いと思います。文章で記述されたルールから推測は付くのですがデータパターンが無いと確信できません。
違反を報告
引用返信
■35680 / ResNo.2)  Re[2]: ロジックの実現お願い
□投稿者/ おき 一般人(2回)-(2025/07/23(Wed) 13:21:58)
  • アイコンこの3入力のとき、出力はどうなりますか?
    0001
    1111
    1221



    Column数が4なのはわかりました。一方Row数はパターンデータ通りに4以下なのでしょうか?
    Row数の制約があれば教えて下さい。
    Row数が必ず4以下で与えられるものとしてパターンデータaが2回繰り返されていたとき出力はどうなりますか?

    1111
    1001
    1111
    1001



    親子孫の定義がなされていません。以下のようなパターンデータのとき出力はどうなりますか?

    1011
    1011


違反を報告
引用返信
■35681 / ResNo.3)  Re[3]: ロジックの実現お願い
□投稿者/ あばば無人君 一般人(3回)-(2025/07/31(Thu) 07:08:29)
  • アイコンおき さん、ご返答ありがとうございます。
    また、返信が遅くなりまことに申し訳ありません。
    (投稿の翌日から昨日まで出張が入り返信できませんでした)

    以下、ご返信いただいた内容にお答え致します。

    > イ.
    > データパターンcの入出力が、文章で記述されたルールと矛盾しているように見えます。
    > 「データパターンc」か「文章で記述されたルール」かどちらかが誤っていますか?

    →データパターンcはあり得ます。文章で記述されたルールが正確ではありませんでした。
     まずルールの前に値の意味を記載すべきでした。(スミマセン)
     値の意味:
      値は0または0以外(正数のみ)で、0は「全て」を意味します。
      また(予想がついていたと思いますが)親子孫は、親→子→孫の関係なので
      上位で0が出てきたら下位も0となります。
      (100はあっても010や001のパターンは無いということ)

      ただし他分類だけは特殊で、親子孫が同じ値の時に他分類が0なら
      集約することになります。(データパターンcがこれに該当します)


    > この3入力のとき、出力はどうなりますか?
    > 0001
    > 1111
    > 1221

    →親子孫が0の入力があり、他は3入力とも1となっているので出力は 0001 のみとなります。


    > Column数が4なのはわかりました。一方Row数はパターンデータ通りに4以下なのでしょうか?
    > Row数の制約があれば教えて下さい。

    →Row数は制限なしです。データパターンの4行はあくまで例となります。


    > Row数が必ず4以下で与えられるものとしてパターンデータaが2回繰り返されていたとき出力はどうなりますか?
    >
    > 1111
    > 1001
    > 1111
    > 1001

    →すべて親1/他1であり、子孫は0なので出力は 1001 のみとなります。


    > 親子孫の定義がなされていません。以下のようなパターンデータのとき出力はどうなりますか?
    >
    > 1011
    > 1011

    →上記値の意味のとおり、上位の子が0なのに孫が1のパターンはありません。


    上記が回答となりますが、「まだ意味不明だよ!」とか「この場合は?」など
    ありましたらご連絡ください。

    返信が遅くなりまことに申し訳ありませんでした。

違反を報告
引用返信
■35685 / ResNo.4)  Re[4]: ロジックの実現お願い
□投稿者/ kiku 一般人(2回)-(2025/09/19(Fri) 11:54:17)
  • アイコン
    2025/09/19(Fri) 11:57:28 編集(投稿者)
    
    ■No35681に返信(あばば無人君さんの記事)
    > 上記が回答となりますが、「まだ意味不明だよ!」とか「この場合は?」など
    > ありましたらご連絡ください。
    
    もう見ていないとは思いますが、確認です。
    
    0が存在するパターンは下記ですべてでしょうか?
    過不足あれば教えて欲しいです。
    0 0 0 0
    * 0 0 0
    * * 0 0
    * * * 0
    0 0 0 *
    * 0 0 *
    * * 0 *
    

違反を報告
引用返信

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






Mode/  Pass/


- Child Tree -

2026/02/24(Tue) 10:49:45 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする