<?xml version="1.0" encoding="Shift_JIS" ?>
<rss version="2.0">
<channel>
<title>DOBON.NETプログラミング道掲示板</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi</link>
<description>DOBON.NETプログラミング道掲示板</description>
<language>ja</language>
<image>
<url>https://dobon.net/banner/dbs1.gif</url>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi</link>
<title>DOBON.NETプログラミング道掲示板</title>
<width>88</width>
<height>31</height>
</image>

<item>
<title>Re[3]: C言語系で使用される書式をVBで使いたい</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35700&amp;type=35696&amp;space=45&amp;no=0</link>
<description><![CDATA[[No:35700]<br>[投稿者:かぼちゃプリン]<br>[日時]2026/02/21(Sat) 13:44:10<br><br>魔界の仮面弁士様、ありがとうございました。<br>C言語系の書式を使用するとなると、結構大がかりなのですね。<br>また、ライブラリのご紹介もありがとうございました。<br><br>実際問題として、本当にこの方法で対応すべきかどうかは検討します。]]></description>
<pubDate>Sat, 21 Feb 2026 13:44:10 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35700&amp;type=35696&amp;space=45&amp;no=0</guid>
</item>
<item>
<title>Re[2]: C言語系で使用される書式をVBで使いたい</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35699&amp;type=35696&amp;space=30&amp;no=0</link>
<description><![CDATA[[No:35699]<br>[投稿者:魔界の仮面弁士]<br>[日時]2026/02/20(Fri) 22:46:27<br><br>■No35697に追伸(魔界の仮面弁士の記事)<br>&gt; .NET Framework には無いので、正規表現で分解して自前解析でしょうかね。<br><br>その「自前解析」で再実装された C スタイル書式文字列対応実装ソースが<br>下記にあります。ライブラリも NuGet できます。<br>https://github.com/adamhewitt627/sprintf.NET/tree/master<br><br><br>上記 README で Adam 氏も書かれていますが、swprintf を<br>直接 P/Invoke するのって、そこそこハードルが高いんですよね…。<br>( No35697 はそれを無理矢理呼んでいるわけですが )]]></description>
<pubDate>Fri, 20 Feb 2026 22:46:27 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35699&amp;type=35696&amp;space=30&amp;no=0</guid>
</item>
<item>
<title>Re[1]: C言語系で使用される書式をVBで使いたい</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35697&amp;type=35696&amp;space=15&amp;no=0</link>
<description><![CDATA[[No:35697]<br>[投稿者:魔界の仮面弁士]<br>[日時]2026/02/20(Fri) 22:17:28<br><br>■No35696に返信(かぼちゃプリンさんの記事)<br>&gt; VBで、C言語系で使用される&quot;%03d&quot;（整数を0埋め3桁にする）のような書式が使えるメソッドは.NET Frameworkに用意されていますか？<br>&gt; VBだったら、例えばint変数.ToString(&quot;000&quot;)のような書式になると思います。<br><br>.NET Framework には無いので、正規表現で分解して自前解析でしょうかね。<br><br>C++ ランタイムである msvcrt.dll の sprintf 関数や snprintf 関数とか、<br>それらの Unicode 対応版とかを呼ぶってのが実装的には確実なんですが、<br>.NET Framework ……というか IL ってのが、そもそも C 言語でいうところの<br>　int sprintf(char* buf, const char* fmt, ...);<br>の可変長引数「...」の呼び出しをサポートしていないので、<br>DllImport (Declare) するなら引数の数ごとにオーバーロードを用意するしかないという罠。<br><br>C# の __arglist、.NET の RuntimeArgumentHandle も、managed な引数向けであって<br>「...」に対する P/Invoke 呼び出しには対応していないんですよね。<br>（これは、VB の ParamArray や C# の params とは別の仕組み）<br><br><br>C++/CLI なら呼べるので、それでブリッジ DLL を作る手はあるけれど、公開関数を<br>　static String^ Format(String^ fmt, ... array&lt;Object^&gt;^ args)<br>としたところで、Object[] を va_list へ変換する部分は自前実装しかないという罠。<br><br><br>いずれにせよ、可変長引数の扱いが厄介なのですが、引数の数がさほど膨大になることもないでしょうし<br>ひとまず 10 個まで渡せるようにしてみました。<br><br><br>Imports System.Runtime.InteropServices<br>Imports System.Text<br><br>Public Class Form1<br><br>　　' VB では可変引数を直接宣言できないため、引数を固定して宣言<br>　　' arg0, arg1, arg2, …の数は、20個でも30個でも必要な分だけ定義する<br>　　' ここでは例として10個の引数をサポートする関数を宣言<br>　　&lt;DllImport(&quot;msvcrt.dll&quot;, EntryPoint:=&quot;_snwprintf&quot;, CharSet:=CharSet.Unicode, CallingConvention:=CallingConvention.Cdecl)&gt;<br>　　Private Shared Function _snwprintf(<br>　　　　ByVal buffer As StringBuilder,<br>　　　　ByVal count As Integer,<br>　　　　&lt;MarshalAs(UnmanagedType.LPWStr)&gt; ByVal format As String,<br>　　　　ByVal arg0 As IntPtr, ByVal arg1 As IntPtr, ByVal arg2 As IntPtr, ByVal arg3 As IntPtr, ByVal arg4 As IntPtr,<br>　　　　ByVal arg5 As IntPtr, ByVal arg6 As IntPtr, ByVal arg7 As IntPtr, ByVal arg8 As IntPtr, ByVal arg9 As IntPtr<br>　　) As Integer<br>　　End Function<br><br><br>　　' VB 側の printf ラッパー（最大10引数）<br>　　Friend Function CPrintf(format As String, ParamArray args As Object()) As String<br>　　　　Dim capacity As Integer = 256<br>　　　　Dim buffer As New StringBuilder(capacity)<br><br>　　　　' 固定 10 引数に展開するための配列<br>　　　　Dim ptrs(9) As IntPtr<br>　　　　Dim allocatedStrings As New List(Of IntPtr)()<br><br>　　　　Try<br>　　　　　　For i = 0 To Math.Min(args.Length - 1, 9)<br>　　　　　　　　If args(i) Is Nothing Then<br>　　　　　　　　　　ptrs(i) = IntPtr.Zero<br>　　　　　　　　ElseIf TypeOf args(i) Is String Then<br>　　　　　　　　　　' 文字列はアンマネージドの Unicode 文字列に変換してそのアドレスを取得<br>　　　　　　　　　　Dim p As IntPtr = Marshal.StringToHGlobalUni(DirectCast(args(i), String))<br>　　　　　　　　　　ptrs(i) = p<br>　　　　　　　　　　allocatedStrings.Add(p)<br>　　　　　　　　Else<br>　　　　　　　　　　Dim val As Long = Convert.ToInt64(args(i))  ' 数値の場合の処理<br>　　　　　　　　　　If IntPtr.Size = 8 Then<br>　　　　　　　　　　　　' x64なら 8byte そのまま積んでOK<br>　　　　　　　　　　　　ptrs(i) = New IntPtr(val)<br>　　　　　　　　　　Else<br>　　　　　　　　　　　　' x86なら 32bitに切り詰める（制限事項：%lld 等は非対応）<br>　　　　　　　　　　　　' ここで 32bit 範囲外なら例外を出すか、下位 32bit のみを渡す<br>　　　　　　　　　　　　ptrs(i) = New IntPtr(CInt(val And &amp;HFFFFFFFFL))<br>　　　　　　　　　　　　' double などの浮動小数点は非対応（%f 等は非対応）だが<br>　　　　　　　　　　　　' どうしても渡したいなら、該当引数の定義を As Double にしておく手もアリ<br>　　　　　　　　　　End If<br>　　　　　　　　End If<br>　　　　　　Next<br><br>　　　　　　' 1回目の呼び出し（サイズ確認）<br>　　　　　　' 可変長引数はサポートされていないため、10個の引数を固定で渡す<br>　　　　　　Dim required As Integer = _snwprintf(<br>　　　　　　　　buffer, capacity, format,<br>　　　　　　　　ptrs(0), ptrs(1), ptrs(2), ptrs(3), ptrs(4),<br>　　　　　　　　ptrs(5), ptrs(6), ptrs(7), ptrs(8), ptrs(9)<br>　　　　　　)<br><br>　　　　　　' バッファ不足時の再試行<br>　　　　　　' msvcrt/_snwprintf の仕様により、エラー時は -1 を返す場合と必要サイズを返す場合があるため、両方のケースを考慮する<br>　　　　　　If required &lt; 0 OrElse required &gt;= capacity Then<br>　　　　　　　　capacity = If(required &lt; 0, 1024, required + 1)<br>　　　　　　　　buffer = New StringBuilder(capacity)<br>　　　　　　　　_snwprintf(<br>　　　　　　　　　　buffer, capacity, format,<br>　　　　　　　　　　ptrs(0), ptrs(1), ptrs(2), ptrs(3), ptrs(4),<br>　　　　　　　　　　ptrs(5), ptrs(6), ptrs(7), ptrs(8), ptrs(9)<br>　　　　　　　　)<br>　　　　　　End If<br><br>　　　　Finally<br>　　　　　　' 確保したメモリを解放<br>　　　　　　For Each ptr In allocatedStrings<br>　　　　　　　　Marshal.FreeHGlobal(ptr)<br>　　　　　　Next<br>　　　　End Try<br><br>　　　　Return buffer.ToString()<br>　　End Function<br><br>　　Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click<br>　　　　Dim s As String = CPrintf(&quot;Hello %s %d %X %03d World. &quot;, &quot;魔界の仮面弁士&quot;, 123, 255, 78)<br><br>　　　　' &quot;Hello 魔界の仮面弁士 123 FF 078 World. &quot;<br>　　　　MessageBox.Show(s)<br>　　End Sub<br>End Class]]></description>
<pubDate>Fri, 20 Feb 2026 22:17:28 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35697&amp;type=35696&amp;space=15&amp;no=0</guid>
</item>
<item>
<title>C言語系で使用される書式をVBで使いたい</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35696&amp;type=0&amp;space=0&amp;no=0</link>
<description><![CDATA[[No:35696]<br>[投稿者:かぼちゃプリン]<br>[日時]2026/02/19(Thu) 11:07:00<br><br>[環境/言語:VB.NET]<br>[分類:.NET]<br>VS2022<br>.NET Framework 4.8<br><br>VBで、C言語系で使用される&quot;%03d&quot;（整数を0埋め3桁にする）のような書式が使えるメソッドは.NET Frameworkに用意されていますか？<br>または、VB用の書式指定子に変換してくれるようなメソッドはありますか？<br>VBだったら、例えばint変数.ToString(&quot;000&quot;)のような書式になると思います。<br><br>実は、他システムから呼び出されるプログラムをVBで作成しているのですが、<br>引数に&quot;%03d&quot;の書式指定子が含まれていて、これをもとに処理結果を出力する必要があります。]]></description>
<pubDate>Thu, 19 Feb 2026 11:07:00 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35696&amp;type=0&amp;space=0&amp;no=0</guid>
</item>
<item>
<title>Re[2]: .NET 4.5.2のVB.NETでのデスクトップ環境開発</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35695&amp;type=35693&amp;space=30&amp;no=0</link>
<description><![CDATA[[No:35695]<br>[投稿者:魔界の仮面弁士]<br>[日時]2026/02/17(Tue) 10:23:20<br><br>■No35693に返信(tarosさんの記事)<br>&gt; 環境/言語:[Windows10 64Bit VB.NET .NET Framework4.5.2 VisualStudio Community 2017]　<br>そもそも.NET Framework 4.5.2のサポートは、2022年4月26日に終了しています。<br><br>既存アプリのメンテナンスならともかく、<br>新規開発で選択すべきフレームワークではありません。<br><br>.NET Framework 4.8 や 4.8.1 (最低でも 4.6.2 以降) に切り替えるか、もしくは<br>.NET Framework ではなく、その後継の .NET 8 などへの乗換をおすすめします。<br>https://learn.microsoft.com/ja-jp/visualstudio/releases/2017/vs2017-compatibility-vs<br><br>できれば VS2017 のままフレームワークバージョンを上げようとするのではなく、<br>VS2026 の導入を検討してみてください。<br>https://artitech.co.jp/post-10947/<br><br><br>■No35694に追記(魔界の仮面弁士の記事)<br>&gt; いや、コードを見せてもらわなければ、指摘できないですよ…。<br>&gt; 実行可能ファイルを解析して中のソースを想像しろってことですか? (^_^;)<br><br>「容量削減のためにウィンドウを共通化」「他のFormウィンドウでも流用したい」という<br>元質問が、どういう意味なのか読み切れていないのですが、<br>現状の実装がどうなっているのか、とりあえずざっくりとバイナリ解析。<br><br>・プロジェクト名に小数点やバージョン番号を含めない方が良いです。<br>　このコードだと、名前空間が「dotNET_Desktop_Panel_0._1._0」のように<br>　不自然なものになってしまっています。<br><br>・コントロールの名前は、コードを書き始める前に設定しておくべきです。<br>　後から変更するとイベントハンドラの名前と一致しなくなり、コードが分かりにくくなりがちです。<br><br>・Cllose ボタンは Close ボタンのスペルミスでしょうか? (Collapse の意図では無さそう)<br><br>・イベントハンドラの名前を見直しましょう。後から見たときに混乱の元です。<br>　Sub PictureBox2_Click は、PictureBox2 ではなく「startButton という名前の PictureBox」の Click に割り当てられています。<br>　Sub ProgressBar1_Click は、ProgressBar1 ではなく「pbRam という名前の ProgressBar」の Click に割り当てられています。<br>　Sub Button1_Click の処理は、どこからも呼び出されていないように見えます。<br>　Sub Button1_Click_1 は、Button1 の Click イベントに割り当てられています。<br>　Sub Label4_Click_1 は、Label4 の Click イベントに割り当てられていますが<br>　Sub Label4_Click は、Label4 ではなく lblRamUsage の Click になっています。<br>　Sub Panel2_Paint_1 は、Panel2 の Paint イベントに割り当てられていますが、<br>　Sub Panel2_Paint は、どこからも呼び出されいない状態です。<br><br><br>・空のイベントハンドラのうち、「誤生成したもの」は無駄なので削除しましょう。<br>　（今後実装予定だが、まだ処理を書いていないという段階ならば、そのまま残しても問題ありません）<br>　Sub Label4_Click は中身が空です。（lblRamUsage.Click から呼ばれる）<br>　Sub Form1_Load は中身が空です。（dotNETDesktopPanel.Load から呼ばれる）<br>　Sub lblVersion_Click は中身が空です。（lblVersion.Click から呼ばれる）<br>　Sub monthCalendar1_DateChanged も空です。(monthCalendar1.DataChanged)<br>　Sub netdeskPanelBottom_Paint も空。(netdeskPanelBottom.Paint)<br>　Sub OpenFileDialog2_FileOk も空。(ofdShortcut.FileOk)<br>　Sub Panel2_Paint も空です。(これはどこからも呼ばれていない)<br>　Sub panelTitleBar_Paint も空です。(panelTitleBar.Paint)<br>　Sub ProgressBar1_Click も空です。(pbRam.Click)<br>　Sub SelectExe_Click も空です。(SelectExe.Click)<br>　Sub ShortcutSettings_Paint も空。(ShortcutSettings.Paint)<br>　Sub startmenuPanel_Paint も空。(startmenuPanel.Paint)]]></description>
<pubDate>Tue, 17 Feb 2026 10:23:20 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35695&amp;type=35693&amp;space=30&amp;no=0</guid>
</item>
<item>
<title>Re[1]: .NET 4.5.2のVB.NETでのデスクトップ環境開発</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35694&amp;type=35693&amp;space=15&amp;no=0</link>
<description><![CDATA[[No:35694]<br>[投稿者:魔界の仮面弁士]<br>[日時]2026/02/17(Tue) 10:09:44<br><br>■No35693に返信(tarosさんの記事)<br>&gt; VB.NETでデスクトップ環境を作りたくて作ってて、<br><br>・起動すると、メインモニターが全画面表示で覆いつくされますが、マルチモニター環境の場合<br>　他の画面には何も表示されないようです。<br>　シングルモニター以外の環境も考慮する必要があるかもしれません。<br>　ちなみに Screen.AllScreens を使うことで、他の画面の座標情報を得られます。<br><br>・[設定]-[ショートカット]で OpenFileDialog2(ofdShortcut) が開きますが、<br>　ここでキャンセルを押したとしても、続けて OpenFileDialog1 が開いてしまいます。<br>　そもそも、2 連続でダイアログを表示させているのは何故ですか？<br>　ふたつのダイアログで、ファイルの種類ボックスの有無が異なっている点も謎ですし、<br>　いずれのタイトルも、単に &quot;開く&quot; としか書かれておらず、機能の意図が分かりにくいです。<br>　ショートカットアイコンの描画処理は良くできていますね。<br><br>・設定パネルを開いている最中にも、左上のアイコンを押せてしまいますね。<br>　設定パネルを閉じるまではアイコンを押せないようにするか、または<br>　アイコンを押した時点で設定パネルを閉じた方が良いのでは？<br><br><br>&gt; 容量削減のためにウィンドウを共通化して、それを他のFormウィンドウでも流用したいのですが、出来ないのです。<br>いや、コードを見せてもらわなければ、指摘できないですよ…。<br>実行可能ファイルを解析して中のソースを想像しろってことですか? (^_^;)]]></description>
<pubDate>Tue, 17 Feb 2026 10:09:44 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35694&amp;type=35693&amp;space=15&amp;no=0</guid>
</item>
<item>
<title>.NET 4.5.2のVB.NETでのデスクトップ環境開発</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35693&amp;type=0&amp;space=0&amp;no=0</link>
<description><![CDATA[[No:35693]<br>[投稿者:taros]<br>[日時]2026/02/15(Sun) 20:49:07<br><br>[環境/言語:Windows10 64Bit VB.NET .NET Framework4.5.2 VisualStudio Community 2017]<br>[分類:.NET]<br>VB.NETでデスクトップ環境を作りたくて作ってて、GNOME2とMacOSX10.1のAquaを合わせたスタイルなのですが、VBを触ってまだ4から5時間程度で、ai(Gemini)にコードを書かせて作りました。ただ、容量削減のためにウィンドウを共通化して、それを他のFormウィンドウでも流用したいのですが、出来ないのです。全くわからないので教えて下さい]]></description>
<pubDate>Sun, 15 Feb 2026 20:49:07 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35693&amp;type=0&amp;space=0&amp;no=0</guid>
</item>
<item>
<title>Re[4]: webformでの制御</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35692&amp;type=35687&amp;space=60&amp;no=0</link>
<description><![CDATA[[No:35692]<br>[投稿者:イクイノックス]<br>[日時]2025/10/02(Thu) 11:28:07<br><br>■No35691に返信(kikuさんの記事)<br>&gt; ■No35689に返信(イクイノックスさんの記事)<br>&gt;&gt;■No35688に返信(kikuさんの記事)<br>&gt; &gt;&gt;■No35687に返信(イクイノックスさんの記事)<br>&gt;&gt;問題はconfirmのほうです。<br>&gt;&gt;具体的に言うと、<br>&gt;&gt;「削除」ボタンはWebform側でサーバーサイドで自動的に生成される感じで、htmlで表現されていません。<br>&gt;&gt;なので、「削除」押下→即postback→(ここからサーバーサイド)page_load→grid_RowCommand→grid_RowDeletingの順にイベントが発生します。<br>&gt;&gt;<br>&gt;&gt;grid_RowCommandでは「新規作成」「更新」、「削除」いずれか発生したか判定できます。page_loadではpostbackしたかどうかしか判定できないようで何ボタンが押されたかわかりません。<br>&gt; <br>&gt; grid_RowCommand処理を下記にしたらできませんか？<br>&gt; １．grid_RowCommandで「削除」ボタンが押下されたか判断。<br>&gt; ２．削除ボタンが押されたら、削除ボタン用入力チェック画面へ遷移。<br>&gt; ３．削除ボタン用入力チェック画面では、confirmのみ表示する。<br>&gt; ４．confirmでOKなら、削除処理画面へ遷移。<br>&gt; ５．confirmでcancelなら、元の画面へ遷移し、削除された表を表示。<br><br>それだと処理が複雑になりすぎるので、<br>AutoGenerateDeleteボタンによる実装を断念し、<br><br>テンプレートフィールドのアイテムとしてボタンを定義して、<br>1.OnClientClickでConfirm表示(returnを返す形)<br>2.CommandNameプロパティーをDeleteに設定<br><br>これで戻り値がfalseの時は処理中止、trueの時はgrid_RowDeleting発動(＝行削除実行)となります。<br><br>結局、AutoGenerateDeleteボタンだと即postbackになるようにロジックが自動生成してしまうので、grid_RowCommandの時点では手遅れ(page_loadが先に発生してしまうので)、なのでpostback前にConfirmのように処理分岐が必要なJSの処理実行するには上記のような方法しかないことがわかりました。<br><br>即postbackに必ずなってしまう使用がいまいちとは思いつつ、最早WebformはCore系で廃止されているため、文句言っても仕様改善は期待できません。<br>テンプレートフィールドを使うのが無難と判断しました。<br><br><br><br>]]></description>
<pubDate>Thu, 02 Oct 2025 11:28:07 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35692&amp;type=35687&amp;space=60&amp;no=0</guid>
</item>
<item>
<title>Re[3]: webformでの制御</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35691&amp;type=35687&amp;space=45&amp;no=0</link>
<description><![CDATA[[No:35691]<br>[投稿者:kiku]<br>[日時]2025/09/24(Wed) 17:12:59<br><br>■No35689に返信(イクイノックスさんの記事)<br>&gt; ■No35688に返信(kikuさんの記事)<br>&gt;&gt;■No35687に返信(イクイノックスさんの記事)<br>&gt; 問題はconfirmのほうです。<br>&gt; 具体的に言うと、<br>&gt; 「削除」ボタンはWebform側でサーバーサイドで自動的に生成される感じで、htmlで表現されていません。<br>&gt; なので、「削除」押下→即postback→(ここからサーバーサイド)page_load→grid_RowCommand→grid_RowDeletingの順にイベントが発生します。<br>&gt; <br>&gt; grid_RowCommandでは「新規作成」「更新」、「削除」いずれか発生したか判定できます。page_loadではpostbackしたかどうかしか判定できないようで何ボタンが押されたかわかりません。<br><br>grid_RowCommand処理を下記にしたらできませんか？<br>１．grid_RowCommandで「削除」ボタンが押下されたか判断。<br>２．削除ボタンが押されたら、削除ボタン用入力チェック画面へ遷移。<br>３．削除ボタン用入力チェック画面では、confirmのみ表示する。<br>４．confirmでOKなら、削除処理画面へ遷移。<br>５．confirmでcancelなら、元の画面へ遷移し、削除された表を表示。]]></description>
<pubDate>Wed, 24 Sep 2025 17:12:59 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35691&amp;type=35687&amp;space=45&amp;no=0</guid>
</item>
<item>
<title>【報告】No35687 の投稿はマルチポストです</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35690&amp;type=35687&amp;space=45&amp;no=0</link>
<description><![CDATA[[No:35690]<br>[投稿者:（報告）]<br>[日時]2025/09/24(Wed) 16:24:14<br><br>No35687 の投稿はマルチポストです。もし元記事の投稿者にマルチポストの心当たりがない場合は、すぐに返信でお知らせください。<br><br>●マルチポストされている場所<br>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31022<br><br>----------<br>この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのルールについて」をお読みください。<br><br>●書き込みのルールについて<br>https://dobon.net/vb/bbs/index.html]]></description>
<pubDate>Wed, 24 Sep 2025 16:24:14 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35690&amp;type=35687&amp;space=45&amp;no=0</guid>
</item>
<item>
<title>Re[2]: webformでの制御</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35689&amp;type=35687&amp;space=30&amp;no=0</link>
<description><![CDATA[[No:35689]<br>[投稿者:イクイノックス]<br>[日時]2025/09/24(Wed) 16:05:24<br><br>■No35688に返信(kikuさんの記事)<br>&gt; ■No35687に返信(イクイノックスさんの記事)<br>&gt;&gt;そのため、postback後に制御する必要がありますが、入力チェック→alertでメッセージ表示は、サーバー側の処理が終わった後に出すイメージで問題ありませんが、confirmはpostback後にRegisterClientScriptBlockで実行するように処理しても、<br>&gt;&gt;サーバー側での更新処理が全部終わってからメッセージが出力される挙動になるため、確認メッセージの用をなしていません。<br>&gt; <br>&gt; サーバーサイドの処理を２つに分ければ良いのではないでしょうか？<br>&gt; １．入力チェックのみを行う処理（入力チェックエラー）<br>&gt; ２．登録のみを行う処理（登録時のエラー）<br>&gt; <br>&gt; 当方、WebFormアプリの作成未経験のため、概念的な回答のみになります。<br><br>1も２もalertなので表示できます。<br><br>問題はconfirmのほうです。<br>具体的に言うと、<br>「削除」ボタンはWebform側でサーバーサイドで自動的に生成される感じで、htmlで表現されていません。<br>なので、「削除」押下→即postback→(ここからサーバーサイド)page_load→grid_RowCommand→grid_RowDeletingの順にイベントが発生します。<br><br>grid_RowCommandでは「新規作成」「更新」、「削除」いずれか発生したか判定できます。page_loadではpostbackしたかどうかしか判定できないようで何ボタンが押されたかわかりません。<br><br>grid_RowCommandで「削除」のときconfirmを出すみたいな処理はできますが、<br>それはgrid_RowDeletingの処理、つまり削除処理が実行された後に表示されるので、confirmの操作が反映できません。<br>おそらくpage_loadで出せばいけるのかもしれませんが、「削除」であることが判定できないためconfirmを出す処理を組み込めません。<br><br>こんな状況です。]]></description>
<pubDate>Wed, 24 Sep 2025 16:05:24 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35689&amp;type=35687&amp;space=30&amp;no=0</guid>
</item>
<item>
<title>Re[1]: webformでの制御</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35688&amp;type=35687&amp;space=15&amp;no=0</link>
<description><![CDATA[[No:35688]<br>[投稿者:kiku]<br>[日時]2025/09/24(Wed) 15:25:36<br><br>■No35687に返信(イクイノックスさんの記事)<br>&gt; そのため、postback後に制御する必要がありますが、入力チェック→alertでメッセージ表示は、サーバー側の処理が終わった後に出すイメージで問題ありませんが、confirmはpostback後にRegisterClientScriptBlockで実行するように処理しても、<br>&gt; サーバー側での更新処理が全部終わってからメッセージが出力される挙動になるため、確認メッセージの用をなしていません。<br><br>サーバーサイドの処理を２つに分ければ良いのではないでしょうか？<br>１．入力チェックのみを行う処理（入力チェックエラー）<br>２．登録のみを行う処理（登録時のエラー）<br><br>当方、WebFormアプリの作成未経験のため、概念的な回答のみになります。]]></description>
<pubDate>Wed, 24 Sep 2025 15:25:36 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35688&amp;type=35687&amp;space=15&amp;no=0</guid>
</item>
<item>
<title>webformでの制御</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35687&amp;type=0&amp;space=0&amp;no=0</link>
<description><![CDATA[[No:35687]<br>[投稿者:イクイノックス]<br>[日時]2025/09/24(Wed) 11:34:57<br><br>[環境/言語:Webform、C#、.NetFramework4.8.1]<br>[分類:ASP.NET]<br>通常、「更新」ボタンなどを画面デザインで配置して実装する場合、<br>クライアントスクリプトで記述するconfirmメソッドはOnClickイベントで実装すると思います。<br><br>gridviewのAutogenerate系のボタンやコマンドコントロールで「自動的」に実装される「ボタン」は画面デザインの時点ではhtmlソース表示しても記述されてないため、OnClickでの制御ができません。<br>そのため、postback後に制御する必要がありますが、入力チェック→alertでメッセージ表示は、サーバー側の処理が終わった後に出すイメージで問題ありませんが、confirmはpostback後にRegisterClientScriptBlockで実行するように処理しても、<br>サーバー側での更新処理が全部終わってからメッセージが出力される挙動になるため、確認メッセージの用をなしていません。<br><br>OnClickに該当する処理をpostback前にhtmlソースに書かれてなくても無理やり挙動させる、あるいはpostback後の「更新」「削除」などのイベント処理の冒頭でconfirmを出し、ok:実行、キャンセル：e.cancel=true等で中止<br>というような処理をするのは不可能なのでしょうか？<br>ご存じの方ご教示ください。<br><br>多分VBでもC#でも同じような処理になると思いますが、<br>一応サーバーサイドはC#で記述してます。<br>]]></description>
<pubDate>Wed, 24 Sep 2025 11:34:57 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35687&amp;type=0&amp;space=0&amp;no=0</guid>
</item>
<item>
<title>Re[11]: リソースデザイナの開き方</title>
<link>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35686&amp;type=35652&amp;space=165&amp;no=0</link>
<description><![CDATA[[No:35686]<br>[投稿者:くるり]<br>[日時]2025/09/22(Mon) 18:01:23<br><br>現在のバージョンでは<br>PictureBox1.Image = My.Resources.tokyo<br>で、問題なさそうです。<br><br>試した環境<br>・Framework：.Net 8.0<br>・言語：VB.NET<br>・Visual Studioのバージョン：17.14.15<br><br>解決済みでしたが、状況が変わったのでご参考までに。]]></description>
<pubDate>Mon, 22 Sep 2025 18:01:23 +0900</pubDate>
<guid>https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=one&amp;namber=35686&amp;type=35652&amp;space=165&amp;no=0</guid>
</item>
</channel>
</rss>
