山崎はるかのメモ (VB.net 編)
社内講習で多い質問・あの機能 どこいったの?
はるさんの プログラミング講習 ?題
このページは、スタッフ講習中に寄せられた質問の中で、特に多いものをまとめたものです。
VB6.0から VB.netに移行する瞬間に 多くの人が直面する疑問です。
〔 IDE(開発環境)を開いて 最初の10分に 自分の目で たしかめておくこと 〕 ※これを その手でたしかめてから かかろうね。
・ 入力するメソッドの 小文字・大文字は VB.net が 自動で置き換えてくれる。
・ F5 でも走る (さすがBASICだな)
・ クラスビューを見ると、Form1 もクラスのひとつであることがわかる。
・ ソリューション構成で、デバッグとリリースを切り替える。
これらは 最初に理解しておくと 後々の進度が ずいぶん変わってくる種類の知識。
だから、ちゃんと 自分の手で・自分の目で、そうであることを確かめておこう。
● 学習するときに、かるく読んどいたほうがいい本ってある?
これを読んでおくと かなりよい。
・「世界でいちばん簡単なVisualBasicのe本」 \1,470
● できるようになってきた人に、便利な本は?
それならこれ
・「VB.NET基礎学習Bible」 \3,024
辞書のように使えて、逆引き風にも読める なかなかの良書。
たぶん、VB.net を使ってる間は、ずっと持ち続けるぐらいだと思うよ。
〔 社内講習・初日に 多い質問 〕 ※まぁ これに戸惑うのは ムリもないと思う。
● App.Path は どこにいった?
Application.StartupPath になってる。
近似 ExecutablePath
● vbCrLf はどうなった?
そのままでも使える。
・・・が、 ControlChars.CrLf を使うようになった人もいる。
うちの会社では どっちでもいい。C#との混在でも "\r\n" に置換(リプレース)するだけだし。
なお、マイクロソフト公式解説書・Visual Basic.NET 実践講座では 、vbCrLf を用いている。
●DoEventsは どこにいった?
Application.DoEvents() になった。
●GetTickCountは どこにいった?
Environment.TickCountになってる。
ただ、ウェイトに使いたいなら、
'一秒間(1000ミリ秒)停止する
System.Threading.Thread.Sleep(1000)として Thread.Sleep を使ってみるのもよい。※ブロッキング(終わるまで返ってこない) なので注意ね
●MDBデータのパスは どこに記載がある? (VB6.0ではプロパティにあった)
フォーム上の デザイナーソースの中に記載されてる。
以下は EXE と同じ位置に MDBを配置する場合の 書き換え方。
' 'OleDbConnection1 ' Me.OleDbConnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _ "ocking Mode=0;Data Source=""" + Application.StartupPath + "\db1.mdb" + """;Jet OLEDB:Engine Type" & _ "=4;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=F" & _ "alse;persist security info=False;Extended Properties=;Mode=Share Deny None;Jet O" & _ "LEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don" & _ "'t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;U" & _ "ser ID=Admin;Jet OLEDB:Global Bulk Transactions=1"
●画面サイズの変化に コントロールサイズを連動させてるソースがあるけど、どうやってるの?
Anchor プロパティを使えば 一発でできる。
〔 社内講習 2日目に 多い質問 〕
●文字列操作
関数 VB6.0 VB.net InStr関数 a = InStr(dstr,"よう!") a = dstr.IndexOf("よう!") Mid関数 a = Mid(dstr,1,b) a = dstr.Substring(0, b) StrConv dstr = StrConv(dstr, vbUpperCase) dstr = dstr.ToUpper
●InStrの Case(Upperなど)がなくなっているが その代替技
a = htstr.ToUpper.IndexOf("<B>")
↑htstrを すべて大文字版として さがす●CLng は どうなった? ( 文字列→数値の変換)
そのままでも 使えるけど(.netでは CIntになるが)
なるべくなら Integer.Parse を使用する。
なお不正文字が含まれてても 例外がスロされない(エラーにならない) Val も使用できる
Dim a As Integer a = Integer.Parse("15") a = Val("abcd15")●2進数・16進数→数値の変換
ConvertクラスのToInt32メソッドを使用する。
Dim a As Integer a = Convert.ToInt32("11111111", 2) a = Convert.ToInt32("ff", 16)※ a は、両方とも255
●数値→2進数・16進数の変換
ConvertクラスのToStringメソッドを使用する。
Dim dstr As String dstr = Convert.ToString(255, 2) dstr = Convert.ToString(255, 16)●Form.Show は どうなった? (別のFormを開く方法。)
クラスをインスタンス化して 制御する。 → 参考
まさに オブジェクトっぽいところだね。
Dim a As New Form2 'モーダル(親子)表示 a.ShowDialog(Me) 'モードレス(独立) a.Show()※ Dim a As New Form2 は、
Dim a As Form a = New Form2と 同じ意味だ。 a.Dispose() で破棄できる。
Diamond Apricot - SHIODEME-SPT