<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
<channel>
<title>Visual Basic 中学校 掲示板</title>
<link>https://keijiban.umayadia.com</link>
<description>Visual Basicを中心としたプログラミングに関する話題</description>
<dc:language>ja-JP</dc:language>
<pubDate>2026-03-05T17:28:57Z</pubDate>
<webMaster>https://www.umayadia.com/</webMaster>
<item>
<title>Visualstudio .AIP using Microsoft.OpenApi.Models;</title>
<dc:date>2026-01-27T23:15:52Z</dc:date>
<dc:creator>S</dc:creator>
<pubDate>Tue, 27 Jan 2026 23:15:52 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31029#CommentId86433</link>
<description>
Visualstudio .AIP using Microsoft.OpenApi.Models;

Visualstudio 2026　ApiKey　を使用したデータ取得する際に
Microsoft.OpenApi.Models　を参照したいが何をやってもできない

Program.cs 
using Microsoft.OpenApi.Models;　　←　これが参照できない

using Microsoft.OpenApi　←　これは参照できるが必要ない

インストールはされていて実装もしている
	&lt;PropertyGroup&gt;
		&lt;TargetFramework&gt;net8.0&lt;/TargetFramework&gt;
		&lt;Nullable&gt;enable&lt;/Nullable&gt;
		&lt;ImplicitUsings&gt;enable&lt;/ImplicitUsings&gt;
	&lt;/PropertyGroup&gt;

	&lt;ItemGroup&gt;
		&lt;!-- Windows サービスとして動かすためのパッケージ --&gt;
		&lt;PackageReference Include=&quot;Microsoft.Extensions.Hosting.WindowsServices&quot; Version=&quot;10.0.2&quot; /&gt;

		&lt;!-- Swagger（Swashbuckle） --&gt;

		&lt;!-- Entity Framework Core (.NET 8 用) --&gt;
		&lt;PackageReference Include=&quot;Microsoft.EntityFrameworkCore&quot; Version=&quot;8.0.10&quot; /&gt;
		&lt;PackageReference Include=&quot;Microsoft.EntityFrameworkCore.SqlServer&quot; Version=&quot;8.0.10&quot; /&gt;
		&lt;PackageReference Include=&quot;Microsoft.EntityFrameworkCore.Tools&quot; Version=&quot;8.0.10&quot;&gt;
			&lt;PrivateAssets&gt;all&lt;/PrivateAssets&gt;
			&lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers; buildtransitive&lt;/IncludeAssets&gt;
		&lt;/PackageReference&gt;
		&lt;PackageReference Include=&quot;Swashbuckle.AspNetCore&quot; Version=&quot;10.1.0&quot; /&gt;　　←　これを使って実装Microsoft.OpenApiは干渉するとのこでなし


</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31029</guid>
</item>
<item>
<title>ToolStripStatusLabel1の表示の件</title>
<dc:date>2026-01-26T09:09:59Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Mon, 26 Jan 2026 09:09:59 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31028#CommentId86432</link>
<description>
丁寧にデバッグしてください。

・プログラムが実行されているか？
ex)セルの値変更を起点にしていて、同じ値を設定したためにイベントが起こっていないようなことはないか？
・プログラムはすべて実行されているか？
ex)値は表示されないが、ForeColor は変わるのか？
・エラー処理は適切か？
ex)直前の処理でエラーが起こった場合、適切にログ出力などで確認できるか？
・対象のインスタンスはすべて意図通りか？
ex)worksheet,ToolStripStatusLabel1の参照先が別のインスタンスになっていないか？
・処理に関連する変数はすべて意図通りか？
ex)iの値が正しいか？グローバルな変数を利用していないか？
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31028</guid>
</item>
<item>
<title>ToolStripStatusLabel1の表示の件</title>
<dc:date>2026-01-22T05:39:26Z</dc:date>
<dc:creator>ケンケン</dc:creator>
<pubDate>Thu, 22 Jan 2026 05:39:26 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31028#CommentId86431</link>
<description>
情報追加
　表示されるケースと表示しない現象が起きています。
　ロジックは同じです。
　その様な現象は珍しいのですか。
　解決策があれば是非お願いします。

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31028</guid>
</item>
<item>
<title>ToolStripStatusLabel1の表示の件</title>
<dc:date>2026-01-21T07:48:25Z</dc:date>
<dc:creator>ケンケン</dc:creator>
<pubDate>Wed, 21 Jan 2026 07:48:25 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31028#CommentId86430</link>
<description>
お疲れ様です。

                       worksheet.Cells(i, 4).Value = &quot;✖&quot;
                        worksheet.Cells(i, 5).Value = _msg
                        &#39;ステータスバーに表示
                        ToolStripStatusLabel1.Text = &quot;商品区分マスタの(登録・変更・削除)時に、エクセルデータにエラーが存在します。&quot;
                        ToolStripStatusLabel1.ForeColor = System.Drawing.Color.Red
                        Application.DoEvents()

　　　　　ToolStripStatusLabel1.Textでメッセージを出力する様にコーディングをしましたが、メッセージが出力されません。

　何方かわかる方ご教授をお願い致します。
　
　宜しくお願い致します。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31028</guid>
</item>
<item>
<title>ClickOnceで発行した際のスタートメニューのフォルダ名</title>
<dc:date>2025-12-26T08:29:44Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Fri, 26 Dec 2025 08:29:44 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31025#CommentId86428</link>
<description>
&gt;スタートメニュー直下のフォルダ名で検索したところ、.applicationの &lt;description asmv2:publisher＝ に同じ記述がありましたので、公開ウィザードの［発行オプション］－［発行者名］を未記入の状態から変更してみました。
発行時に入力する「発行者(Publisher)」、「製品名(Product)」が、そのままローカルインストール時のスタートメニューになり、
更にsuiteNameがサブフォルダになるというのが公式資料の内容ではある。
https://learn.microsoft.com/ja-jp/visualstudio/deployment/how-to-specify-where-visual-studio-copies-the-files?view=visualstudio
https://learn.microsoft.com/ja-jp/visualstudio/deployment/clickonce-deployment-manifest?view=visualstudio
https://learn.microsoft.com/ja-jp/visualstudio/deployment/description-element-clickonce-deployment?view=visualstudio
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31025</guid>
</item>
<item>
<title>ClickOnceで発行した際のスタートメニューのフォルダ名</title>
<dc:date>2025-12-25T00:13:31Z</dc:date>
<dc:creator>たか</dc:creator>
<pubDate>Thu, 25 Dec 2025 00:13:31 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31025#CommentId86427</link>
<description>
とくまさん 回答ありがとうございます。

以前使用していたバージョンはVS2019 communityで、現在はVS2022 Version17.14.17を使用しています。
ターゲットフレームワークはnet8.0-windowsです。

スタートメニュー直下のフォルダ名で検索したところ、.applicationの &lt;description asmv2:publisher＝ に同じ記述がありましたので、公開ウィザードの［発行オプション］－［発行者名］を未記入の状態から変更してみました。
結果、&lt;description asmv2:publisher＝ には入力した文字列が入り、スタートメニュー直下のフォルダはなくなりました。
ただ、［発行者名］のフォルダもできていない状態で、スタートメニュー直下にショートカットが作成されています。

以前のコードとも比較してみます。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31025</guid>
</item>
<item>
<title>ClickOnceで発行した際のスタートメニューのフォルダ名</title>
<dc:date>2025-12-18T08:29:23Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Thu, 18 Dec 2025 08:29:23 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31025#CommentId86426</link>
<description>
公式のチューリアルでは自分でパス指定するウィザードになっていて、質問文の以前のバージョンともVS2022とも違うのかな？
よく分からんね。VS2022というだけでなく、詳細なリリースバージョン。ビルド時の設定で下位互換もあるから、ターゲット
フレームワークなんかもきっちり出して質問すべき内容なのかも。
https://learn.microsoft.com/ja-jp/visualstudio/deployment/quickstart-deploy-using-clickonce-folder?view=visualstudio

デフォルト値が違うというなら、VisualStudioがシステム内部から利用する場合、プロジェクト名よりはアセンブリ情報になりそう。
プロジェクトの開発途中で名称変更したり、別のプロジェクトを流用したりして、過去のアセンブリ情報が残っていると
いうことはないですか？
新規プロジェクトでも同様か？プロジェクトのプロパティやそこから確認できるアセンブリ情報におかしなものはないか？
Microsoftが固定で決めているような単語でない限り、プロジェクトファイルに記録されているので、ソリューション内を
全検索するくらいはしてみても良いのでは？

その上で更に、動きが違うって記事はあったけど
https://qiita.com/miu555/questions/f72f9a10fedc3df1e640
同様の内容ならウィザードが機能ダウンしてる可能性はあるね。プラットホーム共通化を言い出してから、ウィザード関連は
軒並み機能ダウンしたからね。そうなるとmanifestファイルかconfigファイルあたりを直接編集する必要があるかもしれない。
以前のバージョンのファイルと比較してみればいいのでは？
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31025</guid>
</item>
<item>
<title>ClickOnceで発行した際のスタートメニューのフォルダ名</title>
<dc:date>2025-12-15T04:52:00Z</dc:date>
<dc:creator>たか</dc:creator>
<pubDate>Mon, 15 Dec 2025 04:52:00 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31025#CommentId86424</link>
<description>
VS2022を使用しています。
プロジェクトを発行する際に、ClickOnceを選択しています。
以前のバージョンでは公開ウィザードを使用して公開すると、利用者側のスタートメニューに［プロジェクト名］のフォルダが作成されて［プロジェクト名］のショートカットが作成されていたと思います。
VS2022ではショートカットは［プロジェクト名］ですが、スタートメニュー直下のフォルダ名が［プロジェクト名］とは異なります。
スタートメニュー直下のフォルダ名とショートカット名は、どこで指定できるのでしょうか。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31025</guid>
</item>
<item>
<title>VB.net + EPPlus(V4)環境で、List(Of Class)のデータを複数行に一括出力</title>
<dc:date>2025-12-08T06:40:08Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Mon, 08 Dec 2025 06:40:08 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31024#CommentId86423</link>
<description>
&gt;調べたところ、LoadFromTextのDelimiterに文字を設定すれば複数行できるような
&gt;記述はあったのですが期待通りの動作は得られず…
『EPPlus、LoadFromText』で検索したら、複数セルに書込むサンプルコードや実行結果まで公開している
サイトが引っ掛かるので、同様のページを見ているのでしょう。Delimiterについての記述もありました。
しかし、別にDelimiterは必須じゃないし、Delimiterを設定するから複数のセルに書き込めるように
なるわけではないですよね。
複数セルに書き込む場合も、１つの文字列で指定するように実装されているだけで、デフォルトの設定を
利用するならDelimiter指定なし。区切り文字を他のものに変えたい時に指定できる機能のようです。
本題とは別なので、何か言ってることがずれて聞こえます。

サンプルコードや実行結果が載ってて、期待通りではないとか言われても分かりません。
もともと他人が作ったプログラムを利用しているので、自分の思いを押し付けるのが間違いです。
プログラムされている機能を理解して、自分の希望のほうをプログラムに寄せるようにして実現してください。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31024</guid>
</item>
<item>
<title>VB.net + EPPlus(V4)環境で、List(Of Class)のデータを複数行に一括出力</title>
<dc:date>2025-11-11T23:35:37Z</dc:date>
<dc:creator>おじやま</dc:creator>
<pubDate>Tue, 11 Nov 2025 23:35:37 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31024#CommentId86421</link>
<description>
いつも困ったときに拝見、勉強させてもらってます。

List(Of Class)のデータをEPPlus経由でExcelに出力する処理について質問させてください。

Dim HogeList as new List( Of clsHoge )
にデータベースから読み込んだデータを10万行程度Add後、
そのデータを１行ずつEPPlusのLoadFromTextを通して出力しています。

１行ずつではなく、複数行一括でExcel出力できる方法はないのでしょうか？
調べたところ、LoadFromTextのDelimiterに文字を設定すれば複数行できるような
記述はあったのですが期待通りの動作は得られず…

賢人のお知恵をお借りしたく。
宜しくお願いいたします。

開発環境は以下の通りです。
ＯＳ　　：　Windows11 24H2
開発環境：　Visual Studio Community 2019 Ver 16.11.52
　　　　　　VB.net
　　　　　　EPPlus 4.5.3.3
ＤＢ　　：　MariaDB 10.2

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31024</guid>
</item>
<item>
<title>いじめの犯罪者大無田諒斗</title>
<dc:date>2025-10-08T05:38:17Z</dc:date>
<dc:creator>山川中</dc:creator>
<pubDate>Wed, 08 Oct 2025 05:38:17 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31023#CommentId86420</link>
<description>
こいつまだ4ンでないの？
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31023</guid>
</item>
<item>
<title>ASP.net(Webform)でconfirmの戻り値を制御(c#)</title>
<dc:date>2025-09-25T02:23:28Z</dc:date>
<dc:creator>ASP.net(Webform)のイベント処理(c#)</dc:creator>
<pubDate>Thu, 25 Sep 2025 02:23:28 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31022#CommentId86419</link>
<description>
自己解決

色々試してみたが、page_loadにConfirmを出してもサーバー処理後にメッセージが出るので、post前のonClick or onClientClickで処理するしかないと判断、CommandField、Autogenerateのボタンは使わず、テンプレートタグ内でasp:buttonを定義してonClientClickでConfirmを出すようにした。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31022</guid>
</item>
<item>
<title>ASP.net(Webform)でconfirmの戻り値を制御(c#)</title>
<dc:date>2025-09-25T02:23:25Z</dc:date>
<dc:creator>ASP.net(Webform)のイベント処理(c#)</dc:creator>
<pubDate>Thu, 25 Sep 2025 02:23:25 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31022#CommentId86418</link>
<description>
自己解決

色々試してみたが、page_loadにConfirmを出してもサーバー処理後にメッセージが出るので、post前のonClick or onClientClickで処理するしかないと判断、CommandField、Autogenerateのボタンは使わず、テンプレートタグ内でasp:buttonを定義してonClientClickでConfirmを出すようにした。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31022</guid>
</item>
<item>
<title>ASP.net(Webform)でconfirmの戻り値を制御(c#)</title>
<dc:date>2025-09-17T09:06:14Z</dc:date>
<dc:creator>リバティーアイランド</dc:creator>
<pubDate>Wed, 17 Sep 2025 09:06:14 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31022#CommentId86417</link>
<description>
gridviewのAutoGenerateDeleteButtonをtrueにした時の挙動についてです。

RowDeletingイベントで行削除処理自体は制御できている状態ですが、その前に確認メッセージの判定を入れたいです。

gridの外に削除ボタンを設ける場合、html上のOnClickにjsでconfirmとその戻り値の判定を入れれば制御可能と思いますが、
AutoGenerate系で表示されるボタンはhtml上のソースを見てもコントロールの表記がなく、OnClickも定義できないように思えるため、
postback→page_load→RowCommand→RowDeletingの順に挙動しています。

更新の場合の入力チェック等の場合はalert(戻り値なしでよい)でメッセージ出してRowUpdatingをキャンセルすればいいので、
スクリプトコマンドをRegisterClientScriptBlockでalertを出してしまえばよいのですが、
confirmのボタンを押した結果をC#側で取得して処理分岐する方法がわかりません。

ご存じの方ご教示ください。
環境
.NetFrameWork 4.8.1
Webformテンプレートプロジェクトを使用。
サーバーサイド:c#
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31022</guid>
</item>
<item>
<title>ASP.net(Webform)のイベント処理(c#)</title>
<dc:date>2025-09-11T00:58:26Z</dc:date>
<dc:creator>ASP.net(Webform)のイベント処理(c#)</dc:creator>
<pubDate>Thu, 11 Sep 2025 00:58:26 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31021#CommentId86416</link>
<description>
自己レス
更新ボタンのpostbackでPage_Loadが(updatingより先に)走り、gridの値が初期化バインドされていたため。
postback時はdatasouceの設定のみでバインドはしないように修正で解決
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31021</guid>
</item>
<item>
<title>ASP.net(Webform)のイベント処理(c#)</title>
<dc:date>2025-09-10T08:21:47Z</dc:date>
<dc:creator>リバティーアイランド</dc:creator>
<pubDate>Wed, 10 Sep 2025 08:21:47 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31021#CommentId86415</link>
<description>
案件で使うことになって、今更感あるんですが、Webformの学習をしてます。

プロジェクトはWebform(c#)のテンプレートで、そこにgridviewを配置してます。

更新(コマンドコントロール列、AutoGenerateEditButtonのどちらの場合も現象同じ)で発生するRowUpdatingイベントで
セルの入力値(厳密にはEdititemtemplateタグで囲んだテキストボックスの値)が入力前の値になっており、gridへの更新反映ができません。
原因として何が考えられるでしょうか？

環境
.Net Framework4.8.1
WebForm(C#)でプロジェクト作成
IISはデフォルトのLocalhost


</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31021</guid>
</item>
<item>
<title>Oracleのデータをクライアントカーソルで検索</title>
<dc:date>2025-05-30T07:33:31Z</dc:date>
<dc:creator>たか</dc:creator>
<pubDate>Fri, 30 May 2025 07:33:31 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31020#CommentId86414</link>
<description>
DataTableに入れることで検索できるようになりました。
ありがとうございました。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31020</guid>
</item>
<item>
<title>Oracleのデータをクライアントカーソルで検索</title>
<dc:date>2025-05-28T23:25:53Z</dc:date>
<dc:creator>たか</dc:creator>
<pubDate>Wed, 28 May 2025 23:25:53 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31020#CommentId86413</link>
<description>
KOZさん、回答ありがとうございます。

oo4o のころは OraDynaset を便利に利用していました。
現在は、ODP.NET ManagedDriverを利用していますが、DataTableに入れてあげる必要があるのですね。

ありがとうございます。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31020</guid>
</item>
<item>
<title>Oracleのデータをクライアントカーソルで検索</title>
<dc:date>2025-05-28T15:52:11Z</dc:date>
<dc:creator>KOZ</dc:creator>
<pubDate>Wed, 28 May 2025 15:52:11 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31020#CommentId86412</link>
<description>
&gt; 一度取得した複数行の結果に対して、カーソル移動で条件を変えて再検索をしたいのですが、
&gt; 何を使えばよいのでしょうか。

DataTable に入れておけば Select メソッドで検索できます。
https://learn.microsoft.com/ja-jp/dotnet/api/system.data.datatable.select?view=net-8.0#system-data-datatable-select(system-string)

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31020</guid>
</item>
<item>
<title>Oracleのデータをクライアントカーソルで検索</title>
<dc:date>2025-05-28T08:32:05Z</dc:date>
<dc:creator>たか</dc:creator>
<pubDate>Wed, 28 May 2025 08:32:05 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31020#CommentId86411</link>
<description>
VB2019を使用しています。

これまで、Oracleからデータを取得する際に OracleDataReader を利用していました。
ただ、同じSQL文で条件を変えて繰り返し問い合わせをすると無駄に思えます。

一度取得した複数行の結果に対して、カーソル移動で条件を変えて再検索をしたいのですが、
何を使えばよいのでしょうか。


</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31020</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-26T22:45:12Z</dc:date>
<dc:creator>hige3</dc:creator>
<pubDate>Mon, 26 May 2025 22:45:12 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86408</link>
<description>
KOZ様

TabPage に描画する事は出来ました。
問題は、ご指摘通りでTabPageを移動すると消えてしまう事です。

解決策を下記で勉強中でしたが理解力不足で（泣）

初級講座　第２回　絵を書く
http://rucio.o.oo7.jp/main/dotnet/shokyu/standard2.htm


とくま様
＞ディスプレイ上では、常に再描画が行われていることを覚えてください。

下記で確認、ビックリポンでした。
    Private Sub TabPage1_Paint(sender As Object, e As PaintEventArgs) Handles TabPage1.Paint
        MessageBox.Show(&quot;　TabPage1_Paint　&quot;, &quot;確認&quot;, MessageBoxButtons.OK)
    End Sub

＞つまり初心者は、画面に描画する処理でPaint イベント以外は使ったらNGだと思って下さい。

承知致しました。
勉強不足、理解力不足を痛感しております。

お二方、御教授を有り難う御座いました。
今後ともよろしくお願い致します。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-26T09:54:57Z</dc:date>
<dc:creator>KOZ</dc:creator>
<pubDate>Mon, 26 May 2025 09:54:57 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86407</link>
<description>
&gt; 他のウィンドウ(メモ帳とか)をフォームの上に重ねた後に取り除いても消えると思います。
XP 以前は消えてたんですが、「Desktop Window Manager（DWM）」が Vista で導入されてから消えなくなってますよ。
各ウインドウはオフスクリーンバッファ（バックバッファ）に描画され、最終的にGPUで合成されるようになりました。
重なったウインドウが移動しても DWMがキャッシュした内容を使って表示するので消えません。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-26T00:45:58Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Mon, 26 May 2025 00:45:58 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86406</link>
<description>
[VB]
Public Class Form1
    &#39;フォームが生きている限り使いまわす
    Private penR As Pen
    Private penG As Pen
    Private penB As Pen

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        &#39;初期処理
        penR = New Pen(Color.Red, 2)
        penG = New Pen(Color.Green, 2)
        penB = New Pen(Color.Blue, 2)
    End Sub

    &#39;TabPage の Paint イベント
    Private Sub TabPage1_Paint(sender As Object, e As PaintEventArgs) Handles TabPage1.Paint
        &#39;システムが裏で作成した e を利用
        e.Graphics.DrawLine(penR, 10, 120, 50, 220)
        &#39;オリジナル処理(自分で描画オブジェクト確保)
        SenKaki_1()
    End Sub

    &#39;オリジナル処理は関数内でリソースも解放しておく
    Private Sub SenKaki_1()
        &#39;TabPage1のGraphicsオブジェクトを作成
        Dim g As Graphics = TabPage1.CreateGraphics()
        &#39;画像を描画
        g.DrawLine(penB, 60, 10, 20, 30)
        &#39;Graphics破棄(メモリ解放)
        g.Dispose()
    End Sub

    Private Sub Form1_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
        &#39;ペンの破棄(メモリ解放)
        penR.Dispose()
        penG.Dispose()
        penB.Dispose()
    End Sub
End Class
[/VB]
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-26T00:19:30Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Mon, 26 May 2025 00:19:30 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86405</link>
<description>
他のウィンドウ(メモ帳とか)をフォームの上に重ねた後に取り除いても消えると思います。
ディスプレイ上は2次元の話なので、ウィンドウを重ねると下に描画されていたフォームは上書きされて存在しなくなります。
取り除いたときに、もう一度、描画しなおす必要があります。ディスプレイ上では、常に再描画が行われていることを覚えてください。
フォーム自体は、描画する処理が裏の見えない処理に書かれていますが、後からプログラムした描画処理も再描画する
必要があります。この手っ取り早いやり方が Paint イベントです。つまり初心者は、画面に描画する処理で
Paint イベント以外は使ったらNGだと思って下さい。


&gt;    Private Sub SenKaki_1()
&gt;        Me.CreateGraphics.DrawLine(penR, 90, 170, 420, 170)
&gt;    End Sub
これもNG。
Paint イベントの引数(e.Graphics)を使いまわす場合は、裏の処理が後始末してくれるので問題ありませんが、
自分で CreateGraphics するとリソース(メモリ)の確保が行われます。
その場合、解放処理まで自分で書く必要があります。画像系のプログラムはメモリを食うので、
繰り返すと目に見える形でメモリリークが起こる場合があります。
https://dobon.net/vb/dotnet/graphics/drawline.html
&gt;&#39;リソースを解放する
&gt;g.Dispose()
の処理が必要です。
penR も使いまわすのは良いですが、フォームの Dispose イベントで解放するのを覚えたほうが良い場面となります。
penR.Dispose() を呼ぶ必要があります。

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-24T22:50:56Z</dc:date>
<dc:creator>KOZ</dc:creator>
<pubDate>Sat, 24 May 2025 22:50:56 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86404</link>
<description>
フォームを最小化して元に戻してみてください。
書かれたものが消えているはずです。
描画は Paint イベントで行いましょう。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-24T09:17:39Z</dc:date>
<dc:creator>hige3</dc:creator>
<pubDate>Sat, 24 May 2025 09:17:39 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86403</link>
<description>
ＫＯＺ様

起動時の設定は load しか知りませんでしたが、下記でShown を知りました。
＞http://rucio.o.oo7.jp/VBNyumon/BEGIN4.htm

Load　ではうまくいかなかったのが、Shown でうまく描画されました。

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        SenKaki_1()
    End Sub

    Private Sub SenKaki_1()
        Me.CreateGraphics.DrawLine(penR, 90, 170, 420, 170)
    End Sub

    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        SenKaki_1()
    End Sub

TabPage の描画については、これから取りかかりますが理解出来るかどうか（泣）

先ずは、急ぎ御礼まで。
有り難う御座いました。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-23T22:04:25Z</dc:date>
<dc:creator>KOZ</dc:creator>
<pubDate>Fri, 23 May 2025 22:04:25 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86402</link>
<description>
VB6 と違い、メソッド名とコントロールのイベントは結びついていません。
Handles の後に続くのがコントロールのイベントです。
つまり、Handles MyBase.Paint ではフォームのイベントになってしまいます。

イベントハンドラーの追加は
第４回　イベントを逃すな
http://rucio.o.oo7.jp/VBNyumon/BEGIN4.htm
「３－２．プロパティウィンドウによるイベントハンドラーの生成」
を読んでください。


</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-23T21:52:09Z</dc:date>
<dc:creator>hige3</dc:creator>
<pubDate>Fri, 23 May 2025 21:52:09 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86401</link>
<description>
とくま様

前回、フォームに描画する方法として下記を教えていただきました。							
 Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
    e.Graphics.DrawLine(New Pen(Color.Red, 2), 10, 120, 50, 220)
End Sub

今回は Form1 上に作成した TabPage に描画したいんですが、TabPageの指定方法が分からないんです。

因みに下記では不可でした。
    Private Sub TabPage1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
        e.Graphics.DrawLine(New Pen(Color.Gray, 1), 90, 170, 90, 210)
    End Sub
御教授よろしくお願いいたします。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>マウスカーソル位置の指定</title>
<dc:date>2025-05-22T22:34:32Z</dc:date>
<dc:creator>hk</dc:creator>
<pubDate>Thu, 22 May 2025 22:34:32 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014#CommentId86400</link>
<description>
_iShowCnt += 1
Dim pt = New Point(Me.Location.X + 20 + _iShowCnt,
                              Me.Location.Y + 200)
|
If _iShowCnt = 2 Then _iShowCnt = 0

とくまさんからアドバイスいただいたClick回数をカウントしてサブフォームのロケーション位置を前回から少しずらすようにしたところ、
正常に動作するようになりました！！

それならばと、最初に強制的にマウス位置を変更してみましたが、こちらは効果がありませんでした。
Public Shared Sub MousePointerMoveToControl(ctrl As Control)
            Cursor.Position = New Point(0, 0)

            Dim iWidth = ctrl.Width \ 2
            Dim iHeight = ctrl.Height \ 2
            Dim point = ctrl.PointToScreen(New Point(iWidth, iHeight))

            Cursor.Position = point
End Sub

とても勉強になりました！
本当にありがとうございます！


</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014</guid>
</item>
<item>
<title>マウスカーソル位置の指定</title>
<dc:date>2025-05-22T10:51:23Z</dc:date>
<dc:creator>hk</dc:creator>
<pubDate>Thu, 22 May 2025 10:51:23 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014#CommentId86399</link>
<description>
新規プロジェクトでいただいたコードが正常に動作することを確認しました。
また、デバックでは、正常にマウスカーソルが移動するのが確認できました。
ですが、やはり実行すると２回目以降はマウスカーソルが移動しません。
処理が追いついてないのかとThreading.Thread.Sleepで遅らせてみましたが変化はありませんでした。

コードに問題がないことが確認できただけでも助かりました！
丁寧な説明ありがとうございます！もう少し原因を探ってみます！


</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014</guid>
</item>
<item>
<title>マウスカーソル位置の指定</title>
<dc:date>2025-05-22T05:35:17Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Thu, 22 May 2025 05:35:17 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014#CommentId86398</link>
<description>
&gt;vb.net2019 FrameWorks3.5
2019でデフォルトの.NET Frameworkは4.8のはずなので、3.5までダウングレードしているということですよね。
.NET Framework3.5のリリースは2007年とかなので、大きな不具合はもう殆ど対応済みだと思います。

この手のバグで良くあるのは、インスタンスの管理ができていないPGを書いてしまっている場合ですが、
ShowDialogはDisposeを呼ばないとインスタンスが残るものの、Usingが呼び出すので問題なさそう。
この時点で1度目と2度目で動作が違うようなPGを組む方が困難になります。

となると座標の解釈を最初から間違って覚えてしまっているとか、自分でも覚えてない設定をデザイナで
やってしまってるとか。座標系は最大化とかしちゃうと正しく取れなくなったりはするので、初期表示の
WindowStateとか変えてると不具合を起こさせるのは可能かもしれない。

書いてない情報をエスパーするのは難しいので、新規プロジェクトで最小限の再現するコードを作るのが
早道かなぁ。あとは座標を画面やConsole.WriteLineで書き出して地道にデバッグしてみてください。
https://atmarkit.itmedia.co.jp/ait/articles/0511/18/news137.html

新規プロジェクトでフォームデザイナは全てデフォルト設定。以下のコードのみで動作確認してみてください。
こちらの環境では特に問題になりそうな動きはしませんでした。
[VB]
&#39;Form1
Public Class Form1
    Private _ClickCount As Integer = 0
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        _ClickCount = _ClickCount + 1
        Using frm As New Form2
            frm.StartPosition = FormStartPosition.Manual
            frm.Top = 200 + 50 * _ClickCount
            frm.Left = 400 + 50 * _ClickCount
            frm.ShowDialog()
        End Using
    End Sub
End Class

&#39;Form2
Public Class Form2
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Class1.MouseCursorMoveToControl(Me.TextBox1)
    End Sub
End Class

&#39;Class1
Public Class Class1
    Public Shared Sub MouseCursorMoveToControl(ctrl As Control)
        Dim iWidth = ctrl.Width \ 2
        Dim iHeight = ctrl.Height \ 2
        Dim point = ctrl.PointToScreen(New Point(iWidth, iHeight))
        Cursor.Position = point
    End Sub
End Class

[/VB]
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014</guid>
</item>
<item>
<title>マウスカーソル位置の指定</title>
<dc:date>2025-05-22T02:20:40Z</dc:date>
<dc:creator>hk</dc:creator>
<pubDate>Thu, 22 May 2025 02:20:40 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014#CommentId86397</link>
<description>
&gt;カーソル位置を指定するプログラムを書いて、フォーム位置が変わらないという文章が書かれているようです。
&gt;何を言いたいのか分かりませんが、フォーム位置を指定するプログラムを書けばいいのでは？
FormStartPositionをManualに設定して、フォーム位置を指定すると2回目以降のForm呼び出しから
マウスカーソルが指定コントロール上に移動してくれません。
FormStartPositionをManual以外に設定すると、何度実行しても移動しました。

&gt;また、何故2度目以降から移動しなくなるのか解説できる方がいたら教えて欲しいです。
&gt;カーソル位置は何度実行しても移動しました。問題なさそうです。
FormStartPositionをManualでも問題無く動作しますか？
私のプログラムでは2回目以降動作は動作しませんでした。。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014</guid>
</item>
<item>
<title>マウスカーソル位置の指定</title>
<dc:date>2025-05-22T00:29:48Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Thu, 22 May 2025 00:29:48 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014#CommentId86396</link>
<description>
&gt;マウスカーソルが移動するようにしました。
&gt;どうしてもForm位置を指定したいです。
カーソル位置を指定するプログラムを書いて、フォーム位置が変わらないという文章が書かれているようです。
何を言いたいのか分かりませんが、フォーム位置を指定するプログラムを書けばいいのでは？

&gt;また、何故2度目以降から移動しなくなるのか解説できる方がいたら教えて欲しいです。
カーソル位置は何度実行しても移動しました。問題なさそうです。

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-22T00:15:36Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Thu, 22 May 2025 00:15:36 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86395</link>
<description>
TabPage にも Paint イベントは実装されているようです。
前回の質問と何が違うのですか？
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31013
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>TabPageに線を描画する方法について</title>
<dc:date>2025-05-21T22:13:57Z</dc:date>
<dc:creator>hige3</dc:creator>
<pubDate>Wed, 21 May 2025 22:13:57 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017#CommentId86394</link>
<description>
Visual Studio Community 2022  使用の初心者です。
Formに TabControl で TabPage を作成します。
そのTabPage　に線を描画する方法をお知らせ下さい。
ToolBox に Line がないんですね。
ご教授、宜しくお願い致します。 　
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31017</guid>
</item>
<item>
<title>マウスカーソル位置の指定</title>
<dc:date>2025-05-21T06:46:57Z</dc:date>
<dc:creator>hk</dc:creator>
<pubDate>Wed, 21 May 2025 06:46:57 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014#CommentId86391</link>
<description>
vb.net2019 FrameWorks3.5
メインフォームからサブフォームを開く際、
サブフォーム側のLoadイベントで以下の関数を走らせて、指定したコントロール上にマウスカーソルが移動するようにしました。
Public Shared Sub MouseCursorMoveToControl(ctrl As Control)
            Dim iWidth = ctrl.Width \ 2
            Dim iHeight = ctrl.Height \ 2
            Dim point = ctrl.PointToScreen(New Point(iWidth, iHeight))
            Cursor.Position = point
 End Sub
1度目は想定通りの挙動をするのですが、2度目以降マウスカーソルが移動しなくなります。

メインフォームからサブフォーム開く際は、UsingからのShowDIalogで開いています。
この時、FormStartPositionをManualにしていることが関係していることはわかったのですが、
どうしてもForm位置を指定したいです。
何かいい方法はないでしょうか？
また、何故2度目以降から移動しなくなるのか解説できる方がいたら教えて欲しいです。

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31014</guid>
</item>
<item>
<title>フォーム画面に線が描画された状態で起動する方法についてお知らせ下さい</title>
<dc:date>2025-05-10T21:31:35Z</dc:date>
<dc:creator>hige3</dc:creator>
<pubDate>Sat, 10 May 2025 21:31:35 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31013#CommentId86390</link>
<description>
KOZ様
有り難う御座います。

起動時の操作なので　Form1_Load　で設定するものと思っていました。
Form1_Paint　というのがあったんですね。

実現したいのは、フォームに数本の線があって、条件によって一部の線の色を変える事でした。
上書きで実現できることを確認しました。

有り難う御座いました。
今後とも御教授、宜しくお願い致します。

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31013</guid>
</item>
<item>
<title>フォーム画面に線が描画された状態で起動する方法についてお知らせ下さい</title>
<dc:date>2025-05-10T11:10:49Z</dc:date>
<dc:creator>KOZ</dc:creator>
<pubDate>Sat, 10 May 2025 11:10:49 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31013#CommentId86389</link>
<description>
CreateGraphics で作成したオブジェクトに描画したものは一過性のもので、何かあると消えてしまいます。
継続して描画するには Paint イベントで行ってください。

[VB]
 Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
    e.Graphics.DrawLine(New Pen(Color.Red, 2), 10, 120, 50, 220)
End Sub
[/VB]
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31013</guid>
</item>
<item>
<title>フォーム画面に線が描画された状態で起動する方法についてお知らせ下さい</title>
<dc:date>2025-05-10T09:42:23Z</dc:date>
<dc:creator>hige3</dc:creator>
<pubDate>Sat, 10 May 2025 09:42:23 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31013#CommentId86388</link>
<description>
Visual Studio Community 2022  使用の初心者です。
フォーム画面に線が描画された状態で起動するにはどうすれば良いでしょうか？

Form1_Load　などを下記にして試しましたが起動時には何も描画されません。
フォーム上のボタンクリックで  GamenKaki_1() を呼び出すと線が描画されます。

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        GamenKaki_1()
        Me.CreateGraphics.DrawLine(New Pen(Color.Red, 2), 10, 120, 50, 220)
    End Sub

    Private Sub GamenKaki_1()
        Me.CreateGraphics.DrawLine(New Pen(Color.Blue, 2), 10, 240, 50, 320)
    End Sub

    Private Sub Btn_Age_Click(sender As Object, e As EventArgs) Handles Btn_Age.Click
        GamenKaki_1()
    End Sub
ご教授、宜しくお願い致します
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31013</guid>
</item>
<item>
<title>VB5CCE入手</title>
<dc:date>2025-04-29T16:21:41Z</dc:date>
<dc:creator>T-</dc:creator>
<pubDate>Tue, 29 Apr 2025 16:21:41 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=12433#CommentId86386</link>
<description>
懐かしいですね！
 Visual Basic 5.0 のインストールCDに入っていたはずです
1991〜1997年にマイクロソフトが開発したもので現在入手できるのでしょうか
中古市場やフリマアプリなどで見つかるかもしれませんね



</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=12433</guid>
</item>
<item>
<title>フォームのエラーについて</title>
<dc:date>2025-04-15T23:26:24Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Tue, 15 Apr 2025 23:26:24 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31010#CommentId86385</link>
<description>
ケンケンさんは、マイグレーションの質問もしているので、そもそも新規プロジェクトで動く確認から
必要なのですが、特に環境とか大きく変えずに動かなくなったという場合は、

【確認①】プロジェクト配下の bin obj フォルダを削除する
※前回のビルド、デバッグ情報を保管し、うまく動かそうとしているが、そこがそもそもうまく更新できないVisualStudioのバグ

【確認②】参照設定している場合は、一度解除してプロジェクトを開きなおし、参照設定を再登録する
※DLL参照は結構複雑な歴史があって、裏で色々やってるのがうまくいかなくなってる

あたりが誰もが一度は遭遇している対処法ですかね。見た目の設定は変わって無いのに動くというパターン。
とりあえず、新規プロジェクトで作り直して動くかどうかは、かなり有力な原因の切り分けになります。
最悪、新規プロジェクトがうまく動いたら、ソース(C#なら.cs、VBなら.vb)ファイルだけ古いプロジェクトから持ってきて作り直す
なんてことも考えられるわけです。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31010</guid>
</item>
<item>
<title>フォームのエラーについて</title>
<dc:date>2025-04-15T01:14:43Z</dc:date>
<dc:creator>のりす</dc:creator>
<pubDate>Tue, 15 Apr 2025 01:14:43 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31010#CommentId86383</link>
<description>
私も同じ現象が起きました。実行していたプログラムはサービスなのですが、突然同じエラーメッセージを吐いた後、何度再起動かけても同じメッセージがでるだけで、どうしようもなかったのですが、実行プログラムが保管されているフォルダのバックアップを取ったのち、元のフォルダを削除して、バックアップから元のフォルダを作成しなおし、プログラムを起動したら何事もなく起動するようになりました。

根本的な解決にはならないですが、一度試してみてください。

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31010</guid>
</item>
<item>
<title>VB6 フォームを画像として保存したい</title>
<dc:date>2025-03-28T10:55:49Z</dc:date>
<dc:creator>KOZ</dc:creator>
<pubDate>Fri, 28 Mar 2025 10:55:49 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31011#CommentId86382</link>
<description>
非表示の PictureBox を追加し、フォームの画像を転送して SavePicture すればよいです。

[VB]
Option Explicit

Private Declare Function BitBlt Lib &quot;gdi32&quot; (ByVal hDestDC As Long, _
                                             ByVal x As Long, ByVal y As Long, _
                                             ByVal nWidth As Long, ByVal nHeight As Long, _
                                             ByVal hSrcDC As Long, _
                                             ByVal xSrc As Long, ByVal ySrc As Long, _
                                             ByVal dwRop As Long) As Long
Private Const SRCCOPY As Long = &amp;HCC0020

Private Sub SaveFormAsImage()
    Dim pic As PictureBox
    Set pic = Me.Controls.Add(&quot;VB.PictureBox&quot;, &quot;picTemp&quot;)

    &#39; ScaleMode をピクセル単位に設定
    Me.ScaleMode = vbPixels
    pic.ScaleMode = vbPixels

    &#39; PictureBox のサイズをフォームに合わせる
    pic.Width = Me.ScaleWidth
    pic.Height = Me.ScaleHeight
    pic.AutoRedraw = True  &#39; 描画を有効にする

    &#39; フォームの内容を PictureBox にコピー
    BitBlt pic.hDC, 0, 0, Me.ScaleWidth, Me.ScaleHeight, Me.hDC, 0, 0, SRCCOPY
    pic.Refresh

    &#39; 画像を保存
    SavePicture pic.Image, &quot;Z:\form_image.bmp&quot;

    &#39; 一時 PictureBox の削除
    Me.Controls.Remove &quot;picTemp&quot;
End Sub

Private Sub Command1_Click()
    SaveFormAsImage
    MsgBox &quot;画像を保存しました&quot;, vbInformation
End Sub
[/VB]
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31011</guid>
</item>
<item>
<title>VB6 フォームを画像として保存したい</title>
<dc:date>2025-03-24T23:58:48Z</dc:date>
<dc:creator>よんす</dc:creator>
<pubDate>Mon, 24 Mar 2025 23:58:48 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31011#CommentId86381</link>
<description>
VB6についての質問になります。とあるフォームを2つ表示させています。これらのフォームの外観を画像（jpg,png,bitmapなんでもよいです）として
PC内に動的に保存したいのですが、何か方法はありますでしょうか。ネットを探してもそれらしい記事がなくて。。宜しくお願いします。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31011</guid>
</item>
<item>
<title>フォームのエラーについて</title>
<dc:date>2025-03-17T06:07:16Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Mon, 17 Mar 2025 06:07:16 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31010#CommentId86380</link>
<description>
前回の質問
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31009
とほぼ同様ですが、エラー内容からは、
「フォームに配置しているコントロールのどれかで、何かエラーが起こりました。フォームの表示ができません」
程度の情報しか得られていません。

まずは、そのエラーを引き起こしているコントロール(できれば、そのコントロールのどのコマンドか1行まで限定)を、デバッグして特定してください。
特定できたのであれば、その COM の提供元のホームページなどで、現行バージョンの VisualStudio に対応しているか確認してください。
対応しているのであれば、新規プロジェクトで正しく参照できることを確認してください。

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31010</guid>
</item>
<item>
<title>Process.Start(url)で開いたブラウザそのもののプロセスを取得したい</title>
<dc:date>2025-03-15T06:03:41Z</dc:date>
<dc:creator> ポッキー</dc:creator>
<pubDate>Sat, 15 Mar 2025 06:03:41 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31008#CommentId86379</link>
<description>
ちょっと入院することになり、返信が遅れて申し訳ございません。
戻ってきてから試したら、Process.Start(url)で取得したオブジェクトのMainWindowHandleは0が返ってきて、
エラーにはなりませんでした。
当時何か問題があったのかも知れませんが、再現しませんでした。

とは言え、Process.Start(url)で取得したオブジェクトのMainWindowHandleが0ということは、
実際に起動したブラウザのWindowハンドルは得られていないということになるので、
この方法ではブラウザの特定ができなさそうです。

今回の問題は、必ずしも重要なポイントではないので、あきらめようと思います。
ありがとうございました。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31008</guid>
</item>
<item>
<title>フォームのエラーについて</title>
<dc:date>2025-03-13T01:41:41Z</dc:date>
<dc:creator>ケンケン</dc:creator>
<pubDate>Thu, 13 Mar 2025 01:41:41 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31010#CommentId86378</link>
<description>
vbのＦＯＲＭをダブルクリックする。
【エラー HRESULT E_FAIL が COM コンポーネントの呼び出しから返されました。】 
のメッセージが出ます。
　無視して継続するをクリックすると
　　【これらの例外を無視すると、デザイナーは不安定な状態になり、制御が失われる場合があります】で
　　　続行しますかで【はい】をクリックすると
　　　　formが何も無い初期値の画面に成ります
　　　※何方か回避方法をご存知の方ご教授お願いします。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31010</guid>
</item>
<item>
<title>マイグレ開発</title>
<dc:date>2025-03-11T07:31:31Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Tue, 11 Mar 2025 07:31:31 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31009#CommentId86377</link>
<description>
デザイナのソースコードをコメントアウトしたり、デバッグ用のコマンド(Console.WriteLineなど)を追記することで、デバッグ可能です。
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31009</guid>
</item>
<item>
<title>Process.Start(url)で開いたブラウザそのもののプロセスを取得したい</title>
<dc:date>2025-03-04T08:28:16Z</dc:date>
<dc:creator>とくま</dc:creator>
<pubDate>Tue, 04 Mar 2025 08:28:16 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31008#CommentId86376</link>
<description>
&gt; そこで、上記で取得したProcessオブジェクトのMainWindowHandleを取得しようとすると、
基本はそれで合ってるはずです。ただ、この方法では取れない場合があるのも事実です。
https://ja.stackoverflow.com/questions/9338/c-%E5%A4%96%E9%83%A8%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%81%9F%E9%9A%9B%E3%81%AB-%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%88%E3%82%8A%E3%82%82%E5%89%8D%E9%9D%A2%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

とりあえず、ProcessStartInfo の方を使って、UseShellExecute = true も試してみてください。
https://qiita.com/tsukasa_labz/items/80a94d202f5e88f1ddc0
そのあと、Process.WaitForExit(10000)
を間に入れた後に、MainWindowHandle が取れるか確認してもらえますか？MainWindowHandle を取得するのが早すぎると取れなかったので。

こちらの環境では、notepad.exe と chrome.exe はハンドル取得できました。
msedge.exe がダメだったです。(x86)だからかなぁ？プロセスIDまで全く違うやつで立ち上がってくる。。。
ただ、自分で書いたオリジナルコードだと、Process.Start 直後で MainWindowHandle を取っても、
0 になるだけでエラーは出ないんですよね。。。

[VB]
Imports System.Runtime.InteropServices

Public Class Form1
    &#39; Windows APIの関数を定義
    &lt;DllImport(&quot;user32.dll&quot;, SetLastError:=True)&gt;
    Private Shared Function EnumWindows(ByVal lpEnumFunc As EnumWindowsProc, ByVal lParam As IntPtr) As Boolean
    End Function

    &lt;DllImport(&quot;user32.dll&quot;, SetLastError:=True)&gt;
    Private Shared Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, ByRef lpdwProcessId As UInteger) As UInteger
    End Function

    &lt;DllImport(&quot;user32.dll&quot;, SetLastError:=True)&gt;
    Private Shared Function GetWindowText(ByVal hWnd As IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer
    End Function

    &lt;DllImport(&quot;user32.dll&quot;, SetLastError:=True)&gt;
    Private Shared Function GetWindowTextLength(ByVal hWnd As IntPtr) As Integer
    End Function

    Public Delegate Function EnumWindowsProc(ByVal hWnd As IntPtr, ByVal lParam As IntPtr) As Boolean

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        &#39; 開きたいURLを指定
        Dim url As String = &quot;https://www.umayadia.com/&quot;

        &#39; ブラウザを起動
        &#39;Dim browserProcess As Process = Process.Start(&quot;notepad.exe&quot;)
        Dim browserProcess As Process = Process.Start(&quot;chrome.exe&quot;, url)
        &#39;Dim browserProcess As Process = Process.Start(&quot;msedge.exe&quot;, url)
        &#39;Dim browserProcess As Process = Process.Start(url)

        &#39; プロセスIDを取得
        Dim processId As UInteger = Convert.ToUInt32(browserProcess.Id)
        Console.WriteLine(&quot;processId: &quot; &amp; processId.ToString())
        Try
            Console.WriteLine(&quot;MainWindowHandle: &quot; &amp; browserProcess.MainWindowHandle.ToString())
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
        browserProcess.WaitForExit(10000)
        Console.WriteLine(&quot;MainWindowHandle: &quot; &amp; browserProcess.MainWindowHandle.ToString())

        &#39; ウィンドウハンドルを列挙してプロセスIDに対応するウィンドウハンドルを検索
        EnumWindows(AddressOf EnumWindowsCallback, IntPtr.Zero)
    End Sub

    Private Function EnumWindowsCallback(ByVal hWnd As IntPtr, ByVal lParam As IntPtr) As Boolean
        Dim getProcessId As UInteger
        GetWindowThreadProcessId(hWnd, getProcessId)
        Dim length As Integer = GetWindowTextLength(hWnd)
        If length &gt; 0 Then
            Dim windowTitle As New System.Text.StringBuilder(length + 1)
            GetWindowText(hWnd, windowTitle, windowTitle.Capacity)
            Console.WriteLine(&quot;ウィンドウハンドル: &quot; &amp; hWnd.ToString() &amp; &quot;, ウィンドウタイトル: &quot; &amp; windowTitle.ToString() &amp; &quot;, プロセスID: &quot; &amp; getProcessId.ToString())
        End If
        Return True &#39; 次のウィンドウを列挙
    End Function
End Class
[/VB]
</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31008</guid>
</item>
<item>
<title>マイグレ開発</title>
<dc:date>2025-03-04T04:58:08Z</dc:date>
<dc:creator>ケンケン</dc:creator>
<pubDate>Tue, 04 Mar 2025 04:58:08 GMT</pubDate>
<link>https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31009#CommentId86375</link>
<description>
旧
ツール
 Visual Studio２０１９(vb)
DB
Microsoft SQL Server 2019 
．ＮＥＴフレームワーク
4.0
画面フォームの編集可

新
ツール
 Visual Studio２０２２(vb)
DB
Microsoft SQL Server 2022 
．ＮＥＴフレームワーク
4.0
画面フォームの編集が不可
　エラーが出ます。
　　下記のエラーは画面のモジュールをダブルクリックで出ます。
　　【値を Null にすることはできません。パラメーター名:type】
新旧ともコンパイル出来、実行可能です。
　何方か、この様な状況の場合、対策方法が有りますか。
　ご存知の方ご教授お願いします。
 

</description>
<guid isPermaLink="true">https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=31009</guid>
</item>
</channel>
</rss>
