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

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

記事リスト ( )内の数字はレス数
Nomalはじめまして、ちえこです(0) | Nomalちえこデリ駅|大阪・東京出張専門(0) | 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) |



■記事リスト / ▼下のスレッド
■35704 / 親記事)  はじめまして、ちえこです
□投稿者/ 千惠子出張大阪・東京出張専門 一般人(1回)-(2026/07/09(Thu) 03:13:23)
  • アイコン環境/言語:[Windows 8.1 64bit] 
    分類:[.NET] 


    東京・大阪で秘密の出会い、ちゃんと選びたい人だけ、どうぞ。 一人暮らしは、どうしても少し寂しく感じることがありますよね。 もし孤独な夜を一緒に過ごす相手を探しているなら ここであなたをお待ちしています。心を込めたサービスで、あなたの夜を寂しくさせません。 検索→「ちえこデリ駅」
    ご予約・お問い合わせはこちら
    LINE:one660
    Telegram:Japan72
    公式サイト: 126jp.com

違反を報告
引用返信



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35703 / 親記事)  ちえこデリ駅|大阪・東京出張専門
□投稿者/ ちえこデリ駅|大阪・東京出張専門 一般人(1回)-(2026/07/09(Thu) 03:11:30)
  • アイコン環境/言語:[Windows 8.1 64bit] 
    分類:[.NET] 


    東京・大阪で秘密の出会い、ちゃんと選びたい人だけ、どうぞ。 一人暮らしは、どうしても少し寂しく感じることがありますよね。 もし孤独な夜を一緒に過ごす相手を探しているなら ここであなたをお待ちしています。心を込めたサービスで、あなたの夜を寂しくさせません。 検索→「ちえこデリ駅」
    ご予約・お問い合わせはこちら
    LINE:one660
    Telegram:Japan72
    公式サイト: 126jp.com

違反を報告
引用返信



■記事リスト / ▼下のスレッド / ▲上のスレッド
■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]






Mode/  Pass/


- Child Tree -

2026/07/19(Sun) 20:38:04 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする