VB.NET質問スレ(Part44)

■ このスレッドは過去ログ倉庫に格納されています
1.(もんじゃ)
垢版 |
2018/05/26(土) 18:08:49.12ID:QSlAAqmb
前スレ

VB.NET質問スレ(Part40)
http://toro.2ch.net/test/read.cgi/tech/1365857015/
VB.NET質問スレ(Part41)
http://peace.2ch.net/test/read.cgi/tech/1391334405/
VB.NET質問スレ(Part42)
http://echo.2ch.net/test/read.cgi/tech/1419148239/
VB.NET質問スレ(Part43)
https://mevius.5ch.net/test/read.cgi/tech/1465958469/
2018/08/07(火) 03:53:59.75ID:HsfuQN+2
>>41
Console.KeyAvailable プロパティが true なら Console.ReadKey するとか。
2018/08/17(金) 00:18:15.23ID:KHui9/an
PDFファイルを通常使うプリンタに印刷するのにはどげんしたら良かですか?

外部からファイル名をフルパスで渡せば印刷してくれるようなのがいいのですがヒント下さい。

Acrobatのコマンドラインオプションは保証されてないし、自作でexeを作りたいのです。
2018/08/17(金) 12:13:17.60ID:r44yWMR9
非同期がんがれ
2018/08/17(金) 12:13:57.36ID:r44yWMR9
あ、>>41
2018/08/22(水) 19:49:57.73ID:C3wzUlcu
戻り値のある関数もいらないな
グローバル変数を使えばいいわけだし
2018/08/22(水) 20:26:55.43ID:CRGAAmOc
private public Static の違いがわからない俺様が通りますよ。
グローバルだと意図しないところで変な値が入っちゃう可能性があるから使うなとじっちゃんが言ってた。
2018/09/15(土) 12:38:17.24ID:f69ONJY6
エンドユーザーの都合で次の開発案件の開発言語がVB.Netになったオレを慰めてください。
2018/09/15(土) 12:57:12.64ID:wC5+IMEd
>>48
>>エンドユーザーの都合で
金出すヤツの意見が通るのが実情
VB6までの資産有る所はC#にはしない傾向に有る
残念なのは日本でVB.NETに関する導入事例や書籍など情報自体が少ない
海外が多いくらいだ
ネット上で海外から情報取得して生かすしか方法が無い
日本マイクロソフトもC#重視したから尚更
2018/09/15(土) 13:03:37.15ID:f69ONJY6
>>49
最新の構文を使いまくってやる予定
別に嫌がらせじゃないよw
51デフォルトの名無しさん
垢版 |
2018/09/15(土) 18:21:04.91ID:V2kvEVN2
C#に比べて
ラムダとかエクステンションの書き方が
めっちゃわかりにくい
2018/09/16(日) 11:47:37.40ID:o5IUt/R9
VB.NETでシステム構築して今更、他の言語を検討してるとか言ってる所も有る
VB.NETのままでも安く運用する方法考えれば良いのだが、システム更新に責任持ちたく無いヤツ居る職場だと永遠にシステム刷新出来ない罠
2018/09/16(日) 14:03:16.46ID:o5IUt/R9
VB+Oracleで構築しちゃうと
ライセンスでOracleが足かせになる場合出るので、Oracle→MariaDBやPostgreSQLにする方が安く出来る
2018/09/21(金) 14:21:26.19ID:PK30RsTe
SQL鯖の一択
2018/09/22(土) 15:01:46.72ID:tW/Yy4gZ
VB.NET(〜VS2013)の細かい仕様の質問なんだけど、
通常のFormにPictureBoxを載せて、PictureBoxのデバイスコンテキストを取ってきて自前で低レベルAPIで描画してるんだけど、
最初にALTキーを押した時にPictureBoxがチラついて自前の描画が消えてしまう場合がある。
このちらつきは、そのアプリの起動後、ALTキーを押した時に必ず1回だけ発生して、場合によって自前描画もちらつきとともに消える模様。
これを抑止することって出来ないのかな
FormのOnPaint、OnPaintBackgroundを空メソッドにオーバーライドしても効き目なかった
2018/09/22(土) 15:40:38.65ID:kFAOP0FY
一般的な問題と思えんから再現可能なコードを示さないと
誰も何も言えないと思う
2018/09/22(土) 15:52:30.06ID:tW/Yy4gZ
え?そんなにやってることが特殊かな?
扱うデータが大きくてその視覚化を自前ネイティブに任せるとか、よくやる方法だと思ってた
聞く場所を間違えたかな・・・
2018/09/22(土) 15:58:27.43ID:pAduR83f
>>55
>>ALTキー
OnKeyイベントで対処するしか無いんじゃないの
2018/09/22(土) 16:22:56.12ID:kFAOP0FY
>>57
よく分からん思考回路
どこで聞いても同じたお思うよ。
それで答えが返ってきたらその人はエスパーだ
エスパーなんかいないけどね
2018/09/22(土) 16:39:18.15ID:tW/Yy4gZ
>>58
ありがとう
FormのKeyUpとKeyDownとKeyPressイベントで、e.Handled = Trueにしてるんだけど、それでもちらつく
またFormのKeyUpイベントの後に自前描画し直してるんだけど、それでも自前描画が消えてしまうことがある
こういうのがあるから.NETは信頼できないんだよな
2018/09/22(土) 16:42:39.47ID:kFAOP0FY
システムのバグだー!!!
タメグラマの典型的な思考回路だねw

賭けてもいいよ絶対にあんたの書いたコードのバグだからw
2018/09/22(土) 16:49:12.59ID:tW/Yy4gZ
エスパーにしか分からん位に特殊な実装だとは全然思ってなかったなw
2018/09/22(土) 16:52:51.71ID:kFAOP0FY
だから何でそうなるのw

そもそもあんた、特殊な実装をしてるかどうか読み手が判断できるような情報を何も書いてないだろうw
だからそれで答えが返ってきたらエスパーだと言ってるのに重症だなおい
2018/09/22(土) 16:53:24.99ID:/LVptLz+
膨大なデータ生で見せられてもユーザーにはメリットがないのでデータの見せ方を変える
低レベルAPIじゃなく高速描画ライブラリを使う
というのが一般的な対応じゃないかな

そもそもここで言う一般的ってのはやってることが一般的かどうかという意味じゃなく
事象と発生条件が一般的ではないから実際のものを見なきゃ何もわからないという意味だろう
2018/09/22(土) 16:54:14.91ID:kFAOP0FY
hDC取ってWin32API呼びました、これが実装の詳細か?w
2018/09/22(土) 17:14:32.51ID:tW/Yy4gZ
>>64
言葉を返すようだが、「見せ方」「メリット」というけど、そこまで相談はしていないよ
低級API利用が特殊だとは全く思わないし、そもそも描画手続きについて相談してるわけでもない
ALTキー押下でVB.NETのPictureBox上の自前描画が消えるのが問題なんだよ
自前描画もそうだけど、ALTキーを押すなんてそんな特殊なケースだとは思わなかったね
みんな普段ALTキーを使ってないのかよ?w
2018/09/22(土) 17:19:14.70ID:kFAOP0FY
マジで言ってるなら相当の幸せ回路だな

ALTキーを押すのが特殊と思わんかったてw
何でそうなるのw
2018/09/22(土) 17:24:48.15ID:ga1yzWrI
>>66
VB.NETでブラウザ上表示じゃなくForm描画だとしたら、PictureBOXが載ってる親オブジェクトのFormの描画リフレッシュレートタイミングに問題が有るんじゃ無いか
2018/09/22(土) 19:34:34.13ID:/LVptLz+
「起動後の最初」に特定のキーを押す
描画が消えてしまう「ことがある」

特殊バグすぎてイラつくわ
一般的に起こってたまるかよ
2018/09/22(土) 20:50:50.11ID:tW/Yy4gZ
>>68
>リフレッシュレートタイミング
つながってると意味がぼやけるな。それはともかく、
VB.NETのFormは、イベント駆動で再描画されるから常時一定間隔で描画更新されてるわけじゃないだろう
2018/09/22(土) 20:54:15.78ID:tW/Yy4gZ
ところで、再現手順については必要最低限の情報を提示したつもりだったんだが、こんなに特殊に受け止められるとは想定外だったな
これだけ出回っているツールだから、同じケースで悩んでいる人たちがいるだろうと思ってたんだが
主張根拠を、相手の書き込みの一部だけを恣意的に抽出してつなげて、捏造主体の印象操作を行うことに羞恥心を感じない心の浅い人もいるみたいだし、
聞く場所を間違えた、という結論に至りました^^
2018/09/22(土) 21:01:14.93ID:/LVptLz+
バイバイ
2018/09/26(水) 19:54:20.52ID:9vsYZzuM
JavaのOpenJDKはLTSバージョンが無くなった
.NET復権だろうな
2018/10/04(木) 03:58:18.05ID:3Cg3sys6
この掲示板だけのインシデントと信じたいが、
お前らマジで使えねえな
その程度でイキってるからVB.NETが馬鹿にされるんだよ、ゴミ共が
75デフォルトの名無しさん
垢版 |
2018/10/28(日) 14:59:16.13ID:SFrY9m9d
GetPrivateProfileStringでINIファイルの全文を読み込む方法ってありますか?
76デフォルトの名無しさん
垢版 |
2018/10/28(日) 17:31:59.35ID:pnWZEcOz
>>75
第1引数と第2引数をNULLで出来るみたいだぞ

↓ここを参考
https://msdn.microsoft.com/ja-jp/library/cc429779.aspx
77デフォルトの名無しさん
垢版 |
2018/10/28(日) 20:11:08.64ID:SFrY9m9d
>>76
おお!目を通したつもりがよく理解できてなかったよ
大変助かったよ!本当に有難う!精進します。
78デフォルトの名無しさん
垢版 |
2018/10/28(日) 20:28:08.52ID:SFrY9m9d
http://jump.5ch.net/?https://msdn.microsoft.com/ja-jp/library/cc429779.aspx
ここを参考に考えてみたけれど
lpDefault
NULL で終わる既定の文字列へのポインタを指定します。lpKeyName パラメータで指定したキーが .ini ファイル内に見つからなかった場合、
GetPrivateProfileString 関数はこの既定の文字列を、lpReturnedString パラメータが指すバッファへコピーします。lpDefault パラメータで NULL を指定することはできません。

第一引数と第二引数をNULLにしてSECTIONとKEYを一挙に取得したい際、pKeyName パラメータで指定したキーが見つからないってことだと思うから
結局第三引数が第四引数の中に入っちゃうのですが
解釈がおかしいのでしょうか
79デフォルトの名無しさん
垢版 |
2018/10/28(日) 20:43:01.97ID:pnWZEcOz
>>78
実際にやってみた?、考えただけ?

普通に解釈すればlpKeyNameがNULLということは
キーを指定していないんだからキーが見つからないと
なるとは考えられないけどね

実際にやってみてlpDefaultの値がlpReturnedStringに
入ってしまったのならこの関数で全文取得は無理なんじゃないかな
80デフォルトの名無しさん
垢版 |
2018/10/28(日) 22:33:46.69ID:SFrY9m9d
>>79
実際にやってみて入らなかったよ、教えてくれたのに申し訳ない。
INIファイルからキーを全部抽出して任意のタイミングで変数に入れたいだけなんだが
調べてもよく分からなくて質問を受けてくれてる方にも
困惑させてしまっているな...
2018/10/29(月) 06:03:03.69ID:WUUAbnDR
30分ごとに料金を+500円ずつ足していってラベルテキストに表示するプログラムが作りたいのですが
どうすればいいでしょうか?
経過時間を計測するところまではできています
2018/10/29(月) 08:05:28.84ID:zamFShY8
>>81
Tickイベントで1秒毎に変数に1足していって300.600.900辺りで表示するようにすればいい
2018/10/29(月) 10:50:14.54ID:oAZGLoeZ
>>80
> 第一引数と第二引数をNULLにしてSECTIONとKEYを一挙に取得したい
誤解してない? これで手に入るのはセクションの一覧だよ
その後で個々のセクションごとに改めて第2引数だけNULLでGetPrivateProfileStringを呼び出してそのセクション内のキー一覧を取得する

ほかの確認事項としては
iniのファイルパスが正しい確認、念のためフルパスで渡す
\0で区切られた文字列はStringとかStringBuilderとかでは正しく受け取れないからByte配列で受け取ってEncoding::GetStringで文字列変換
2018/10/29(月) 18:57:40.55ID:vJZ8/XYU
>>83
ごめんなさい、少し勘違いをしていました。
第一引数でセクションを指定し、第二引数をVBNullStringにした場合、キー値ではなく何故かセクション名をひとつだけ取得するのですが、第一引数でセクションを指定し、第二引数をnullにすれば指定したセクションのキー値をすべて取得できるという解釈は誤りでしょうか?
2018/10/29(月) 19:27:50.65ID:oAZGLoeZ
> 第一引数でセクションを指定し、第二引数をnullにすれば指定したセクションのキー値をすべて取得できるという解釈は誤りでしょうか?
解釈は正しい
セクションしか取れないのは何か勘違いしてんじゃね
1つしか取れないのは>>83の最後の行
2018/10/29(月) 20:04:46.54ID:EQ0ZvgtX
>>85

GetPrivateProfileString(セクションの変数, キー値の変数, "", strBuffer, strBuffer.Capacity, FileName)
KeyValue =strBuffer.ToString

第一引数でセクションの変数(ここでは「element」とします。)第二引数にVBNullStringを代入した際、strBufferに格納される値が
「element」のみなのですが>>85さんの仰るとおり何か勘違いをしているのでしょうか...
以下、INIファイルです

[element]
VALUE1 = AAA\nBBB
VALUE2 = CCC\nDDD
[element2]
VALUE3 = EEE\nFFF
VALUE4 = GGG\nHHH

本来VALUE1の値である「AAA\nBBB」とVALUE2の値である「CCC\nDDD」が取得されるものかと思っておりました。
87デフォルトの名無しさん
垢版 |
2018/10/30(火) 00:57:51.70ID:8/9eZ6sC
大して複雑でもないんだから、悩むなら
ファイル全読して自分で解析した方が早そう
2018/10/30(火) 13:23:38.49ID:LlhJqt4w
>>86
ヌルストリングはヌル値じゃなくて空文字列の事じゃん?
2018/10/30(火) 13:36:29.61ID:LlhJqt4w
nullにすればって言ってるからヌル渡してると思うじゃん?
まさか空文字列を渡して動かないと言ってるとは思わないじゃん?
2018/10/30(火) 13:43:18.14ID:2q9Nopp0
(定数) Constants.vbNullString As String = Nothing
インテリセンスによるとこうらしい
説明では長さ0の文字列とか言ってるけどな
2018/10/31(水) 01:30:41.68ID:uKh/exBf
>>86
GetPrivateProfileString("element", vbNullString, ...
としたときにバッファに帰る文字列は

"VALUE1" & vbNullChar & "VALUE2" & vbNullChar & vbNullChar

なので、lpReturnedString に StringBuilder を渡すと最初の vbNullChar で区切られてしまう。
こういうときは >>83 が書いてくれてるようにバイト配列で受けるか、 Marshal.AllocHGlobal でバッファを確保してアドレスを渡す。

Unicode バージョンを呼び出している場合は

Dim bufferPtr As IntPtr = Marshal.AllocHGlobal(1024)
Dim buffer As String = String.Empty
Dim nSize As Integer = GetPrivateProfileString("element", vbNullString, vbNullString, bufferPtr, 512, "C:\HOGE.ini")
If nSize > 0 Then buffer = Marshal.PtrToStringUni(bufferPtr, nSize - 1)
Marshal.FreeHGlobal(bufferPtr)
Dim keys As String() = buffer.Split(vbNullChar)

こんな感じ
2018/11/03(土) 19:15:19.21ID:t0xGKw3G
>>90
Nothingを文字列として評価すると長さゼロの文字列だからな
2018/11/03(土) 19:36:08.98ID:SHI5qsHH
VBのNothingはnullではなく型の規定値だったはず。
つまり、

Dim hoge as String = Nothing
はC#の
var hoge = default(string);

と同じはず。
だからどっちにしろ空文字ではなくNull参照じゃないとおかしい気がする
2018/11/03(土) 20:46:51.95ID:0JFYuFT5
Debug.Print("{0}", String.Empty.Equals(vbNullString)) .. False
Debug.Print("{0}", String.Empty = vbNullString) ... True

面白いな。
2018/11/07(水) 00:28:16.72ID:SlJfY7pV
WindowsFormアプリからExcelを参照する際に困ったことがあったので質問します。
いま参照しているExcelに名前ボックスが同じ名前のActivexコントロール(CheckBox)が2つあるんですが片方のValue値が取れません。
Excelには手を加えずに解決する方法をご存じの方はいますか?
2018/11/08(木) 16:15:45.02ID:QFdBGuQW
>>95
自己解決しました。
2018/11/08(木) 18:23:13.28ID:EefS2xXv
>>96
解決方法ぐらい書き込めよ
2018/11/08(木) 21:54:24.86ID:VFBZ++97
>>97
(Excelシート名).OLEObject(1).Object.Value
名前じゃなくインデックスで値を拾う感じ
2018/11/12(月) 17:40:02.30ID:epPqaRvS
datagridviewで選択した行のテキストを各列ごとにテキストボックスに反映させるにはどうすればいいですか?
2018/11/13(火) 11:07:08.55ID:XsWLHTll
BindingSourceを作って
DataGridViewのDataSourceと各TextBoxのDataBindingに割り当てる
2018/11/13(火) 17:35:19.43ID:rlJmmkiE
BindingSource って Visible=False なコントロールを飛ばするとか、微妙なところあるんだよなぁ
102デフォルトの名無しさん
垢版 |
2018/11/16(金) 15:10:13.08ID:3cDS4XFZ
11/14あたりのWindowsUpdateでListViewの表示がおかしくなった。
正確には「View=Tile」にしてもLargeIconになってしまうケースがある。
既にリリース済みのシステムで今日から表示がおかしいという問合せが
あった。どこに原因があるのか確認しようとミニマムなコードを書いて
みても普通にTileで表示されるので原因がまだ特定できていない。
それとApplication.EnableVisualStyles()していてもTabコントロール上の
ボタンにVisualStyleが適用されないものもある。この時、Tabコントロール
以外に存在するコントロールにはVisualStyleが適用されている。
これも原因がわからない。。

同じような現象になった人っていますか?
103デフォルトの名無しさん
垢版 |
2018/11/16(金) 23:58:30.69ID:HodhQ/sE
おるわけないやろオマエのバグやのにw
2018/11/20(火) 17:31:14.06ID:5r5VrLgw
Windowsフォームを閉じる際にMe.close()とMe.dispose()の両方を書いたら閉じる時の挙動がおかしい(後ろで開いてたエスクプローラーが一瞬だけ出てくる)のですが原因が分かる方いますか?
105デフォルトの名無しさん
垢版 |
2018/11/24(土) 15:05:28.97ID:krxB1Xz+
俺も今月からおかしいのに気が付いた。
Private Abc as String = "AAA"と設定しているのに、

ボタンイベントで下記のみ実行

Abc = "ABDEF"
TextBox1.Text = Abc
Dim S1 as String = Abc
Msgbox(S1)

上記のコードを実行すると Msgboxの表示は”AAA”
テキストボックス表示は”ABDEF”
今月になって発覚した。
仕方ないからクラスを追加してグローバル変数にして実行している。

プライベート変数 すべてに影響があって初期値に戻される事象。
vs2017の修正を試したがだめだった。
2018/11/24(土) 15:23:36.71ID:VBkVIhNz
>>105の頭が目がおかしいのだろう
さすがにそんな言語レベルの根本的なバグがあったら自動テストで拾える
Msgboxのバグで以前表示した値が出ているとかならワンチャンないとも言い切れなくもないかもしれない可能性はゼロではないかもね
2018/11/24(土) 22:20:58.15ID:/Hv6UjJC
こいつらはどうしてちゃんと環境かかないんだろうねぇ
2018/11/25(日) 11:13:33.12ID:sTNuHYLw
聞かれないからじゃね
109102
垢版 |
2018/11/26(月) 08:57:51.44ID:DXbnFpYk
Windows 10 Pro 1803 x64
VisualStudio 2013 + .NET Framework 4 + VB.Net
この環境で Windows.Forms アプリを開発してます。
2018/11/26(月) 09:23:13.92ID:jCGZ4ioD
.NET4はとっくにサポート期限切れてるから使っちゃダメ
もしWinのアップデートのせいだったとしても、サポート切れの.NET4なんか当然テストしてないだろうし、自己責任よ
111102
垢版 |
2018/11/26(月) 15:59:12.73ID:DXbnFpYk
当該の不具合が発生している環境は Window 7 Pro x86 です。
後だし情報ですんません。
112102
垢版 |
2018/11/26(月) 16:02:59.93ID:DXbnFpYk
連投になってしまってすんません。
Windows 7 は 2020年1月で切れるということは、まだ切れてないんじゃ
ないんですか?
この解釈は間違ってますか?
.NET Framework 4 のサポートが終わったってどこに記述ありました?

ここにはそこまで書いてないと思うのですが。
https://www.microsoft.com/ja-jp/download/details.aspx?id=17718
113102
垢版 |
2018/11/26(月) 16:25:55.15ID:DXbnFpYk
ライフサイクルについてはここで見つけることができました。
https://support.microsoft.com/ja-jp/help/17455/lifecycle-faq-net-framework
「2016 年 1 月 12 日に終了しました」とありますなorz
2018/11/27(火) 02:01:37.35ID:JHhXTC3j
そもそもVS2013って、Win10で動作保証されているのか?
115デフォルトの名無しさん
垢版 |
2018/11/27(火) 10:19:17.21ID:Z5tknMOb
VB2013てWin8.1までだな。
Win10ならVS2015以降か。
116デフォルトの名無しさん
垢版 |
2018/11/27(火) 16:09:13.84ID:veQAfEkI
もしかして、開発のプロパティが .NET2とか初期値になってない?
PCにインストールしていない下位バージョンの.NET開発は挙動がおかしいよ。
まれだが、バージョンを最新に指定するとなおることも多い。
117102
垢版 |
2018/11/27(火) 19:10:09.64ID:Z5tknMOb
>>116
対象のフレームワークは.NET Framework 4になってる。
ミニマムに再現確認しようと新規でプロジェクトを(.NET4で)作成しても問題なし。
でも既存のはListViewでView.TileにならずView.LargeIconだったりVisualStyleが適用されなかったりする。。
(Win7の実行環境でもWin10の開発環境でも。)

みんなはちゃんと最新の開発環境に移行できてるの!?
今回問題になってるアプリケーションはVS2003の頃に.NET1.1で開発初めて、途中で.NET2.0にして
いまはVS2013+.NET4で保守してきてるけど、そんなにポンポンと開発環境をMSの言うがままに
アップデートしてきてるの!?!?
2018/11/27(火) 20:05:39.30ID:GOjY0rNn
こういう典型的な保守さんを見ると、そんなにあんたたちの作ったものは品質が高いのかとツッコミたくなる
クソ細かいこと気にする前にもっと他にいくらでも直さなきゃいけないところあるだろ?
やるべきことをやらないくせに「やらない」ことに対してだけオーバークォリティな典型的な無能
2018/11/27(火) 20:10:12.34ID:p/6t1dkT
>>118
子供過ぎw
2018/11/27(火) 20:36:21.61ID:JHhXTC3j
どうさ保障されてる環境でないとサポートされないからな

問題が起きたらまずサポートされてる環境で再現するか確かめるわ
2018/11/27(火) 23:40:16.63ID:Z5WUNYoK
>>117
manifestになんか書いてるとか
122102
垢版 |
2018/11/28(水) 17:57:11.21ID:ue+ZFZI7
>>117
.manifestはないけど.exe.configならある。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0" sku=".NETFramework,Version=v2.0"/>
</startup>
と書いてる。
このあたりをv2.0の行を削除してみたりuseLegacyV2RuntimeActivationPolicyを
なくしてみたりといじってみたけど解消されず。。
123デフォルトの名無しさん
垢版 |
2018/11/29(木) 00:08:17.33ID:VI19qptG
ListViewは.NET4で安定してるはず。
NET4以前は、ある一定行数を超えるとエラーで処理が止まるということがあった。
だから、WIN32APIを使ってWM_PAINTメッセージを処理するコードを使わないと
ほぼ動かない状態だった。だが、.NET4でWIN32API呼び出しがいらなくなった。

多分だが、ビルド関係のPC固有のバグも含まれると思う。
なので、VSを終了してデバックされたものではない<開発中のアプリEXE>を
直接動かしてみてね。それでどうか?
VS2008の頃は、VSのデバック使わないで開発してた経緯がある。
124102
垢版 |
2018/11/29(木) 08:25:18.55ID:usvQhOSh
>>123
.NET4 以前の不具合は知らなかった。ありがとう。

今回の現象は、.NET1.1の頃に開発したソースをそのままずっと引き継いでいて
VS2003〜2005〜2008〜2010〜2013、.NET1.1〜2.0〜3.5〜4と変遷しながらも
そのまま使用している。
いま起きている不具合は Releaseビルドした実行ファイルを、別PCで実行しても
発生するし、VSでのデバッグ実行でも発生している。
125デフォルトの名無しさん
垢版 |
2018/11/29(木) 16:27:06.98ID:VI19qptG
確か、そのころVS2003とかDLL出力できないものだよね。
多分 .resxファイルとか残ってるでしょ?

サポート対象のバージョンで動くかどうかではなく、昔から流用してきたコードやメソッドを
見直すほうが先だと思う。古いメソッドとか使ってると微妙なものがある。
126102
垢版 |
2018/11/29(木) 19:16:02.04ID:usvQhOSh
>>125
開発当初から.resxファイル使ってるよ。
これマズいの?

確かに過去に.NETを新しいものに変更したときそれまで使用していたメソッドが
使えなくなってメンテした記憶はある。
でも.NET4で作成したアプリがついこの間までは普通に使えていたのに
急に挙動(見た目)が変わるって変じゃない?
単純に ListView の View を Tile にしても LargeIcon になってしまうのって気持ち悪いし。
enum定数の値が変わったとかならわからなくもないけど、実際にはenumのView.Tileを
指定しているし。
ステップ実行してもそのタイミングでViewはTileになっている。
けれども実際の見た目はLargeIconになっている...

まあサポートの切れた.NET4を使っていて文句言うなと指摘されそうだけど。
2018/11/29(木) 20:42:47.87ID:zhuKFo+V
デバッグ実行で再現するならミニマムコード作って晒せよ
128デフォルトの名無しさん
垢版 |
2018/11/30(金) 00:40:56.22ID:rf9Ni6yN
あ! そうか・・  LargeIconの設定はコードで書いてるの?
リストビューのツールプロパティに設定項目なかったかな?
それで試してみた? 設定変更のコードを削除してから試してね。

ただ、頻繁に変更するとか、あとバグるメソッドじゃないんだよね。

なんどもすまん!



  
  
  
129102
垢版 |
2018/11/30(金) 08:57:01.31ID:SIPYJVnh
>>127
ミニマムコード書いても再現されないから困ってるんだよ。

>>128
ListViewコントロールのViewを LargeIcon、Tile、SmallIcon、List、Detail と
切り替えられるようにしている。
もちろんコードでやってる。
で、書いてくれたように今、デザイン時でTileにしてコードでは変更しなくてもやはり
LargeIconになってしまったよ。。。

Tile時はImageに加えてSubItemの文字列も表示されるので便利なんだけど
現状ではLargeIconになってしまうのでSubItemが見えず一見すると同じような
ものが並んでしまって判断つかないからDetailに表示を切り替えて我慢して
もらっている。でもこれだとImageが表示されないので、これはこれで不便なんだよね。

そもそも気になるのが、VisualStyleを有効にしているのに、同じフォーム内でも
ボタンで適用されているのとされていないものが混在しているってこと。

フォームのタブコントロール上のパネルコントロールに配置しているボタンには
適用されていないけれどフォームのパネルコントロールに配置しているボタンは
適用されている。。。

でも再現確認しようとミニマムなものを新規で作成してみてもこんな事にならず
ちゃんと全てのコントロールにVisualStyleは適用される。

わけわからない。。
2018/11/30(金) 11:41:46.78ID:eQTcWZX5
賭けてもいい。システム側の問題じゃない
あなたのコードの問題
最初からそう言ってる人もいたけど、それはここに書いてる文章の行間からも十分推測できる
2018/11/30(金) 18:19:51.56ID:Lh71478i
今のプロジェクトから削っていくのでも
新しいプロジェクトに増やしていくのでも
どっちでもいいから順番にやってけば
132102
垢版 |
2018/11/30(金) 20:23:30.40ID:SIPYJVnh
ミニマム環境作ってだいぶ調べた。

プロジェクトのプロパティで「アプリケーション」内の「アプリケーションフレームワークを有効にする」の
チェックを外すと再現できた。
このチェックを付けるとListViewはTileとして表示される。
チェックを外すとListViewはTileを指定してもLargeIconで表示されてしまう。
133デフォルトの名無しさん
垢版 |
2018/11/30(金) 21:39:51.29ID:cIO0a97u
よし、その調子で調査を続けたまえ
2018/11/30(金) 23:37:28.55ID:aHvjCfZ2
>To enable tile view, your application must call the Application.EnableVisualStyles method.
らしいけど、ちゃんと呼んでるのか?
アプリケーションフレームワーク有効だとその辺勝手にやってくれてたはず
2018/12/01(土) 15:47:20.03ID:6wWEz5Hu
>>129
ボタンの VisualStyle は UseVisualStyleBackColor プロパティで変わる。

>>132 のようなことにはならないよ。
136デフォルトの名無しさん
垢版 |
2018/12/01(土) 18:09:06.36ID:KZz1rFV5
自動テストって業務アプリでもつくっておけよ。ww
そんなの死んでも作らんわ。
137デフォルトの名無しさん
垢版 |
2018/12/03(月) 02:07:02.91ID:CiT4luJ/
そこまでならシステムバグかも。言ってるだろ保存時のエラーを拾ってる可能性が高いって。
私も経験していて、すべて同じコードをそっくり新規プロジェクト作成してコピペすると
バグの再現率は皆無。早めに移動させたほうがいいよ。

3年前には、バックグランドのIsBusyが毎度Falseで戻るというバグ。
この時も新規プロジェクトにコードをコピペしたら直った。
138102
垢版 |
2018/12/03(月) 08:39:16.52ID:SG+JG4dk
だから、新規でミニマムコード書いてみて再現するんだって。

VS2013+VB.NET+.NET4でWindowsForms新規プロジェクト作成して、

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.ListView1.Columns.Add("1")
Me.ListView1.Columns.Add("2")
Me.ListView1.Columns.Add("3")
Me.ListView1.Columns.Add("4")
Me.ListView1.View = View.Tile

For i As Integer = 0 To 9
Dim lvi As ListViewItem = New ListViewItem(String.Format("item{0}", i))
lvi.SubItems.Add(String.Format("SubItem1_{0}", i))
lvi.SubItems.Add(String.Format("SubItem2_{0}", i))
lvi.SubItems.Add(String.Format("SubItem3_{0}", i))
Me.ListView1.Items.Add(lvi)
Next

End Sub

とでも書いておけば、プロジェクトのプロパティの「アプリケーションフレームワークを有効にする」の
チェック有無でViewがTileになったりならなかったりするんだって。
139102
垢版 |
2018/12/03(月) 10:29:50.33ID:SG+JG4dk
その後の検証で、VS2017+.NET4や.NET4.7.1などではアプリケーションフレームワークを無効にしていても
Application.EnableVisualStyles()を呼んでおけば大丈夫でした。
以上
140102
垢版 |
2018/12/03(月) 10:44:29.67ID:SG+JG4dk
VS2013のVB.NETでアプリケーションフレームワークを有効にしない場合、コードで
Application.EnableVisualStyles()を実行していてもVisualStyleが適用されない部分が発生する
(中途半端に適用されてしまう)ことがわかりました。

アプリケーションフレームワークを無効にして Sub Main() から起動していたものを
アプリケーションフレームワークを有効にして ApplicationEvents で処理するように変更することで
今回の件は対応できました。

さようなら。
2018/12/03(月) 13:28:55.92ID:iyo7d7NK
Formを表示するだけなのにvirustotalで調べると
Endgame malicious (moderate confidence)
Trapmine malicious.moderate.ml.score
↑の2つが必ず検出される・・・
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況