トップページ⇒tech
1001コメント332KB

VB.NET質問スレ (Part8)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
VB.NETの質問全般です

過去スレ
VB.NET質問スレ (Part7)
http://pc5.2ch.net/test/read.cgi/tech/1096683017/
VB.NET質問スレ (Part6)
http://pc5.2ch.net/test/read.cgi/tech/1088812165/
VB.NET質問スレ (Part5)
http://pc5.2ch.net/test/read.cgi/tech/1078134703/
VB.NET質問スレ (Part4)
http://pc2.2ch.net/test/read.cgi/tech/1065269043/
【老若】VB.net質問スレ【男女】 (Part3)
http://pc2.2ch.net/test/read.cgi/tech/1056281084/
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/tech/kako/1043/10436/1043629429.html
【老若】VB.net質問スレ【男女】
http://pc2.2ch.net/tech/kako/1025/10258/1025848458.html
0153デフォルトの名無しさんNGNG
>>152
PictureBox1.image = nothing
0154152NGNG
>>153
即答ありがとうございます!
0155デフォルトの名無しさんNGNG
>>151
WMIで取得するというのはどうか。

'参照の追加でSystem.Management.dllを追加
Imports System.Management

Dim mc As New ManagementClass("Win32_UserAccount")
Dim mo As ManagementObject, prop As PropertyData
For Each mo In mc.GetInstances()
    Console.WriteLine(mo.Item("Name"))
Next
0156デフォルトの名無しさんNGNG
>>155
できた!できました。
本当にありがとうございます
0157デフォルトの名無しさんNGNG
リストビューのサブアイテムに文字入れてやりたいのですがどうすればいいのでしょうか。
0158デフォルトの名無しさんNGNG
ヘルプに載ってる。
0159デフォルトの名無しさんNGNG
>>158
載ってました。
すみません。
0160デフォルトの名無しさんNGNG
>159
どんまい
0161フナ太郎NGNG
.NET tipsとか行ったら、C#のtipsしかなくてムカついた、ってこと
ないですか?
0162デフォルトの名無しさんNGNG
これ使え

ttp://authors.aspalliance.com/aldotnet/examples/translate.aspx
0163デフォルトの名無しさんNGNG
テキストボックスを拡張して、フォーカスが移ると境界線が変わるものを作成しています。
以下のようなイベントにすると、テキストボックス内でTabを押したときに、フォーカスが次のコントロールに移りません。
Private Sub MyTextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Enter
Me.BorderStyle = BorderStyle.Fixed3D
End Sub
Private Sub MyTextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Leave
Me.BorderStyle = BorderStyle.FixedSingle
End Sub

ところが、境界線を変更する命令をなくすと、Tabでフォーカスが移ります。
Private Sub MyTextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Enter
Me.BorderStyle = BorderStyle.Fixed3D
End Sub
Private Sub MyTextBox_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Leave
' Me.BorderStyle = BorderStyle.FixedSingle
End Sub

境界線を変更しつつTabでフォーカスを移すには、どうしたらいいでしょうか。
0164ケンNGNG
directdrawのように、裏画面で背景やキャラクターを合成して、表画面に転送するといったようなことをdirectdrawを参照しないで、GDI+だけで作成することはできますか?





0165デフォルトの名無しさんNGNG
>>163
BorderStyleを変更するとフォーカスが当たりなおされるみたいだね。
BorderStyleを書き換える前後でフォーカスが当たらないようにEnabledをFalse -> TrueにすればOK。

>>164
できるよ。
Bitmapを作って書き込んで、最終的にそのBitmapを表に描画。
0166デフォルトの名無しさんNGNG
以下のようなプログラムを書きました

フォームにファイルをドラッグアンドドロップ
→ドロップされたファイルの名前をリストボックスに表示
→ファイルを外部プログラムで処理(その際処理が終わるまで待つ)

ソース

Private Sub Form1_DragDrop・・・
Dim filename As String = e.Data.GetData(DataFormats.FileDrop, False)
ListBox1.Items.Add(filename)
Shell("hogehoge.exe " & filename, AppWinStyle.Hide, True)
End Sub

ところがこれだと、hogehoge.exeの処理が終わるまで(けっこう長い・・・)、
ファイル名がリストボックスに表示されません。

おそらく外部処理の終了まで待つように設定しているからなのですが、
外部処理はいくつかあり、順番を守らないといけないため、
この設定は変えられそうにありません。

リストボックスに表示されてから処理に移るようにするには、
どのようにしたら良いのでしょうか?
0167デフォルトの名無しさんNGNG
Shellを実行する前にListBox1.Refresh()
0168166NGNG
なんと簡単な・・・orz

ありがとうございました!
0169デフォルトの名無しさんNGNG
DoEventsとか、スレッドとかそっち方面でもいけそうだね。
0170163NGNG
>>165
以下のように書いたら直りました。
Me.Enabled = False
BorderStyle = BorderStyle.FixedSingle
Me.Enabled = True

が、今度はShift+Tabを押したときの動作がおかしいです。
フォーカスが1つ前のコントロールに移らず、1つ後に移っています。
おそらくコントロールを無効にしたときに、すぐに次のコントロールにフォーカスが移るので、
そこで動作がおかしくなるのだと思います。
これを直すにはどのようにすればいいでしょうか。
0171デフォルトの名無しさんNGNG
>>170
なんか165が言ってることと全然違うことやってるみたいだけど。。

しかし、こういうのは意図したとおり動作しない原因を考えることも
もちろん重要だけど、それ以上にいろいろ試行錯誤することが重要だと思う。

人に質問する前に、例えばEnter/LeaveじゃなくてGotFocus/LostFocusを使うとか
SelectNextControlメソッドを試すとか、やることあるでしょ?
0172デフォルトの名無しさんNGNG
>>171
聞いて来たらすぐに答える俺らの対応も悪いかもね。
0173デフォルトの名無しさんNGNG
どこで質問したものか迷って、
スレ違いとは思いますが、質問させてください。

今、Visual Stadio .NET 2002、 .NET Framework1.0 の環境で、
これをFramework1.1にしようと思ったのですが、これって出来ないのでしょうか?
0174デフォルトの名無しさんNGNG
>172
しかもへぼい回答だしな。お前の場合。
0175デフォルトの名無しさんNGNG
>173
実際できなかったのかどうかをまず書けよ。
0176デフォルトの名無しさんNGNG
>>174
エスパーか?
0177173NGNG
>>175
自分でやった限りではできませんでした。
マイクロソフトのダウンロードサイトから再頒布可能パッケージやらSDKやら落としましたが。
0178デフォルトの名無しさんNGNG
>>177
WindowsUpdateで常に最新の状態を保ってるなら、すでにFramework1.1の状態。

個別で落としてきたって言っても、落としただけじゃ駄目だよな。インストールしないとよ。
0179デフォルトの名無しさんNGNG
質問の意図は、VS2002で.NET1.1を扱えないかということではないのかな。
それなら一言、無理。
0180173NGNG
>>178、>>179
レスありがとうございます。

>質問の意図は、VS2002で.NET1.1を扱えないかということではないのかな。
そのとおりです。
無理なのですか・・・
0181デフォルトの名無しさんNGNG
>>180
SharpDevelopでも入れたら?
あんまり活気ないけれど、専用スレもあることだし。
0182デフォルトの名無しさんNGNG
音楽を再生するMMControlについて質問です。
MIDIデータを再生し、一時停止(Pause)した後、再びその位置から再生すると、何故か音色が変わってしまいます。
使った事のある方なら殆どの方がきっと「あれ?」と思うところだと思います。

どうもMMControlでは、頭から再生しようとした場合しか音色設定を読み込んでない気がするのですが、
何か解決方法は無いでしょうか。
0183デフォルトの名無しさんNGNG
リストボックスにフォーカスをうつすときは
Listbox1.focus()
で、できるんですがリストの項目自体にフォーカスを移すことってできますか?
0184デフォルトの名無しさんNGNG
セレクトすりゃ良いんで無い?
0185デフォルトの名無しさんNGNG
>>184
すまん、そだった(;´Д`)
サンクス
0186デフォルトの名無しさんNGNG
>179
えー、そうなの?なんでなんで?
0187デフォルトの名無しさんNGNG
2002で作成したアプリケーションを.NET Framework 1.1上で動かすことはできる

ただ、コード補完等の恩恵を受けられないから新しく加わった機能を使うことが結果的にできない
既存の機能にバグがあって避けたいなら有効な手段かもしれない

やり方は・・・忘れた(ぉ
exeファイルと一緒になんかファイルを置くだけだった希ガス
0188デフォルトの名無しさんNGNG
あぁ、あった

http://www.microsoft.com/japan/msdn/library/ja/cpguide/html/cpcontargetingnetframeworkversion.asp?frame=true

これを使うと荒業ながら、1.1上でプログラムを"動かすことは"できる
所詮、1.1の新機能を使うことはできないからあんま意味無いかもしれないけどね
0189デフォルトの名無しさんNGNG
よくわからないのですが、

2002 → 1.0
2003 → 1.1

なの?
0190デフォルトの名無しさんNGNG
>>189
そう。
ついでに
2005 → 2.0
0191デフォルトの名無しさんNGNG
Button コントロールを継承した色付きボタンを作成中なのですが、
OnPaint を上書きする以外の方法でフォーカス時の枠を表示させない方法は
ないですか?

OnPaint 乗っ取って自前の描画部分作ってたら泣きそうになりました。
素の C++ で Windows アプリ書く人はえらいと思いつつ。
0192デフォルトの名無しさんNGNG
Buttonの描画ごときでがたがた言うな。
0193デフォルトの名無しさんNGNG
リッチテキストのスクロールを一行単位のスクロールにしたいんですが、どうすればできますか?
0194デフォルトの名無しさんNGNG
>>193
マウスのプロパティでホイールのスクロールを1行に
0195デフォルトの名無しさんNGNG
Dim A as String

で、このAに

LoadEstimate1,"saved_estimate1"
↑
のような、""を含んだ文字列を入れたいのですが

A = "LoadEstimate1,"saved_estimate1""

としても入れることができません。どうしたらよいのでしょう?
0196デフォルトの名無しさんNGNG
"の中に書く"は""
0197デフォルトの名無しさんNGNG
質問させてください。
データセットのfindメソッドで取得した特定のレコードのpositionを
取得したいんですが、どうすればいいでしょうか?

具体的にやりたいことは、テキストボックスにキーを入力すると
全レコードが表示されているグリッド上で
自動的にそのキーのレコードまで飛んで、選択状態になるようにすることです。
よろしくお願いします。
0198デフォルトの名無しさんNGNG
VB.NETでメールの送受信をやろうとしています。
送信にはMailMessageクラスやSmtpMailクラスを使えばよい事が判ったのですが、
メールの受信をやってくれそうなクラスが見つかりません。
もしかして.NETのライブラリには受信クラスが無いんでしょうか?
0199デフォルトの名無しさんNGNG
ないよ
がんがって自前でSocketをこねこね実装してくれ。

CodeProjectとかGotDotNetとかに転がってると思うけど。
0200デフォルトの名無しさんNGNG
>>198
そうみたいだね。
ttp://dobon.net/vb/dotnet/internet/receivepop3mail.html
0201デフォルトの名無しさんNGNG
>>199
GotDotNetでCSLMailっていうライブラリを見つけたんですが、これは駄目でした。
よくわかりませんがメールをダウンロードする途中でコケます。

>>200
リンク先で紹介されていたBASP21を使ってみました。
とりあえずファイルへの保存とヘッダーごとの読み取りはうまくいったのでこれを
使ってみようと思います。

>>199,200
ありがとうございました。
0202デフォルトの名無しさんNGNG
Windows FormからFTPを使いたいのですが、なにか良いクラスかコンポーネントは無いでしょうか?
自作するほどスキルありません・・・・

今↓を使っているのですが、いまいち使い方がわからんです・・・
http://www.componentspot.com/products/review.aspx?id=6&MasterCat=0&Categories=2000

0203デフォルトの名無しさんNGNG
ttp://gotdotnet.com/community/usersamples/Default.aspx?query=FTP
0204デフォルトの名無しさんNGNG
>>203
Thanks!!
0205デフォルトの名無しさんNGNG
Windowsフォームでテキストボックスが1つあるのですが、
例えばテキストボックスにフォーカスが無い状態で
キーが押されたらテキストボックスに押されたキーを入力するには
どうすれば良いのでしょうか?

KeyPreviewをTrueにして、テキストボックスにフォーカスしても
キー値は入力されません。

0206デフォルトの名無しさんNGNG
Form.KeyPressイベントで入力文字をテキストボックスに追加する。
0207デフォルトの名無しさんNGNG
ドトネトってネイティブコンパイラついてますか?
0208デフォルトの名無しさんNGNG
>>207
ネイティブコンパイラってCPU命令に変えてくれるコンパイラのことでいいんだよね?
それなら無い。VB.NETのコンパイラはCLRっていう中間言語に変えるコンパイラ。
0209デフォルトの名無しさんNGNG
>>207
.NETのランタイムにはJITコンパイラとか事前コンパイル用コンパイラとかついてるけど、
.NETランタイム無しで動作するネイティブのバイナリを作る機能はどこにも無い。
0210デフォルトの名無しさんNGNG
海外の市販ソフトにはアセンブリをネイティブな実行ファイルにするソフトもあったりする。
0211 207NGNG
>>208
うーーーん残念です
ドトネトに期待していたのですが

>>209
JIT?あとで調べてみますが最適化かなにかででしょうか

>>210
アセンブリは中間コードのことですね?

VBから乗り換えるきがしない OrZ
0212デフォルトの名無しさんNGNG
いままでVBランタイムが必要だったのが、その代わりに.NET Frameworkが必要になるだけじゃん。
0213デフォルトの名無しさんNGNG
ngen(CLR Native Image Generator)コマンドがあるけど、
ネイティブコードコンパイラとは程遠いです。
起動時のモッサリ感がなくなる程度。
あとC++で /clr を付けなきゃネイティブコードをはきます(笑)
0214デフォルトの名無しさんNGNG
>>211
VBよりは言語仕様が大幅に強化されたってとこかな>VB.NET
まぁ、「.NETになって何が良くなったか?」なんてのはいっぱい記事になってるから
適当な雑誌のバックナンバーでも漁ってみるといいよ

その上で乗り換えるかどうか考えたほうがいい
0215デフォルトの名無しさんNGNG
VS2003を買ったんですけど、うちのPCはwinxp HOMEエディションでした・・・。
ウェブアプリの勉強をしたいのですが自分の環境ではウェブアプリ
ケーションは作れないのでしょうか・
0216デフォルトの名無しさんNGNG
WebMatrixというのを調べてみな。
0217デフォルトの名無しさんNGNG
すみません。
質問なんですが、
10進数→2進数に変換する関数ってあるのでしょうか?

10進数→16進数や10進数→8進数に変換する関数だったら
見つけたのですが…。
0218デフォルトの名無しさんNGNG
教えて君で申し訳ございませんが、神様助けてください。
MSNメッセンジャーのアラートのような動きのするフォームを作れという客先からの無茶な要求に泣いております。
TCP通信にてメッセージが流れてくれば、そのWinsock経由でデータ取得し表示するform1を作成しました。
で、MSNメッセンジャーのアラーとのように約5秒間ポップアップしてポップアップしたform1クローズなのですが、
クローズする前に次のデーターがWinsock経由で流れてくればform1を新たに開いて表示しております。
(つまり、画面にはForm1が複数個表示されています。)
しかし、クローズ処理をしたときに当然ながらform1.closeだと表示しているすべてのフォームがクローズ
してしまいます。で、複数個オープンした場合、指定したフォームのみ閉じるということはできないのでしょうか。
そもそも、私のform1だけ使うという考え方に無茶があるような・・・(泣)
神様助けてください!

Private Sub Form1_Load
Me.Location = New Point(0, 850)
Me.Show()
Wait(5000)
Me.Close()
End Sub

Winsockからデータが来たときには
Dim f1 As New Form1()
f1.Location = New Point(x, y)
f1.Show()
としております。
0219デフォルトの名無しさんNGNG
>>217
System.Convert.ToString(String, Integer)
0220デフォルトの名無しさんNGNG
System.Convert.ToString(Integer, Integer)
だった。
0221デフォルトの名無しさんNGNG
>>218
なんだそのコード?
Loadイベントの中でCloseは普通呼ばんだろ。
0222デフォルトの名無しさんNGNG
>>220
ありがとうございます。助かりました。
早速使ってみます。
0223デフォルトの名無しさんNGNG
>>221
すいません、別件でデバッグしていた名残が(汗
Me.Close()は今はありません。失礼しました。
0224218NGNG
あぁ〜ついでに、Wait(5000)も無い。
駄目だ俺・・・焦りすぎ(泣)
ちなみに、Show時にラベルに表示するプログラム部とかは省略しております。
0225デフォルトの名無しさんNGNG
そもそも仕様がよくわからん。
メインフォームがあって、でソケットを受け取った時にForm1が表示されるって訳じゃないのか。
初めにソケットを受け取るものは何なんだ?
タスクトレイにでもしまってるとか? ならその部分のコードを示せ。
0226218NGNG
>>225さん
すいません、そうです。タスクにしまう予定です。でも、まだ作っておりません。
とりあえず、一つのフォームを何個もオープンさせて、それぞれの開いたフォームを個別制御できるの?
ってところを検証してみようとしている段階なので・・・
って、それだと、Form_LoadにMe.show()あること自体変ですね。
やっぱ、だめだ俺(泣)
そもそも、同じフォームを何個もオープンさせておいて、
それぞれ開いた同じフォームを個別で制御するにはどうしたら良いのでしょうか。
0227デフォルトの名無しさんNGNG
>>226
ユーザーインターフェースを持たないnothifyiconのみの
フォームでそれぞれのFormを制御してみたら?
0228デフォルトの名無しさんNGNG
>>218
フォームじゃなくて、NotificationWindowを使ったら?
ttp://msdn.microsoft.com/vbasic/default.aspx?pull=/library/en-us/dv_vstechart/html/vbpowerpack.asp
0229218NGNG
>>227さん
ありがとうございます。
ユーザーインターフェースを持たないnothifyiconのみのフォーム
ってどういったフォームですか?申し訳ないのですが教えて頂けますでしょうか。
本当にすいません・・・
0230デフォルトの名無しさんNGNG
まあまず自分でタスクトレイ部分を実装してみようや。
0231218NGNG
>>228さん
おぉ〜!! ありがとうございます。
参照させていただきます。

>>230さん
そうですね。まずはそれをやってみます。
スレの神様たち本当にありがとうございました。
とりあえず、1つずつがんばってやっています。
0232デフォルトの名無しさんNGNG
OS:Win2000 / VB.NET2003

While sr.Peek() > -1
txts = sr.ReadLine()
txt2 = txts.Split("<"c)
'txt2(1) = txts
ListBox1.Items.Add(txt2(1))
tlist(cnts) = txts
cnts += 1
End While

というソースの「tlist(cnts) = txts」の部分で下のエラーがでてしまいます。どうすればいいんでしょうか?
0233デフォルトの名無しさんNGNG
あ、投稿が切れてしまった。

'System.NullReferenceException' のハンドルされていない例外が test.exe で発生しました。

追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。

です。よろしくお願いします。
0234デフォルトの名無しさんNGNG
ぬるぽ
0235デフォルトの名無しさんNGNG
>>232
Redim tlist(cnts)
tlist(cnts) = txts
0236232NGNG
>>235
ありがとうございます!
0237232NGNG
再び質問です。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f1 As Form1
Dim f4 As Form4
f4.MdiParent = f1
f4.Show()
End Sub

今度はこれなんですが、
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
がでます。よろしくお願いします。
0238232NGNG
書き忘れです。

呼び出しているのはMDIの子フォームです。
0239デフォルトの名無しさんNGNG
New
0240232NGNG
ぐはぁっ

>>239
ありがとうございます
0241デフォルトの名無しさんNGNG
またまたまた質問です。
このようなソースを書いたのですが、帰ってきたテキストが文字化けしてしまいます。
どうすれば解決するでしょうか?検索してもさっぱりわからん_| ̄| .....○

Dim tcpClient As New TcpClient
tcpClient.Connect("ex7.2ch.net", 80)
Dim stream As NetworkStream = tcpClient.GetStream
Dim bytsend As Byte() = System.Text.Encoding.ASCII.GetBytes("GET /morningcoffee/dat/" & msg & " HTTP/1.0" + vbCrLf + "Host: ex7.2ch.net" + vbCrLf + "User-Agent: Monazilla/1.00 test" + vbCrLf + vbCrLf)
stream.Write(bytsend, 0, bytsend.Length)
Dim bytread(4096) As Byte
Dim strtext As String
Dim intlength As Integer
strtext = ""
Do
intlength = stream.Read(bytread, 0, bytread.Length)
strtext += System.Text.Encoding.ASCII.GetString(bytread)
'strtext += Convert.ToString(bytread)
If intlength < bytread.Length Then
Exit Do
End If
tcpClient.Close()

Dim sw As New StreamWriter(Environment.CurrentDirectory & "\log\" & msg, False, _
System.Text.Encoding.GetEncoding(932))
sw.Write(strtext)
sw.Close()
MsgBox(strtext)
Loop
0242デフォルトの名無しさんNGNG
2chのログが何でEncoding.ASCIIなんだ? 0x7Fまでしか処理できないぞ。
0243デフォルトの名無しさんNGNG
>>242
どうやればいいんでしょうか?
「VisualBasic.NET逆引き大全500の極意」って本の例文をみつつ、やったので・・・
0244デフォルトの名無しさんNGNG
そんなのはこんなとこで聞いてるより VB.NET Encoding でぐぐれ。
2chのエンコーディングってどれですかとか聞くより自分で試せ。
0245デフォルトの名無しさんNGNG
>>244
うまくいきました。ありがとうです。

やっぱサンプル通りはだめっすね
0246デフォルトの名無しさんNGNG
>>245
何がいけなかったのかを理解しないとそのサンプルソースの作者に失礼だよ。
0247デフォルトの名無しさんNGNG
>>245
サンプル通りが駄目じゃなくて、サンプルのコードを理解してないのが駄目なだけ。
0248デフォルトの名無しさんNGNG
今度、.NETを勉強し始めようと思うのですが、
VC++6.0とか6.0のverやっていれば、.NETにすんなり移行できるでしょうか?
0249デフォルトの名無しさんNGNG
全然違うと評判なので、思い立ったが吉日、勉強しようと思ったらさっさと始める。
0250デフォルトの名無しさんNGNG
>245-247
すいません。自演でした。
0251デフォルトの名無しさんNGNG
誰も聞いてない。
0252デフォルトの名無しさんNGNG
>250-251
すいません。自演でした。
■ このスレッドは過去ログ倉庫に格納されています