====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*= [ Visual Basic.NETに挑戦する No.006 ] 2003/03/12 毎週水曜日 =*====*====*====*====*====*====*====*====*====*====*====*====*====*====*==== 勢いで買ってしまったVisual Basic .NETを使って、プログラムを組んでみます。 主にExcelやAccessのVBAしかやったことのない三流プログラマーのKen3が、 がんばって解説します。初心者歓迎です(プロの人は内容が簡単で物足りないかも) 有料版なので遠慮しないでドンドン質問下さいね。 楽しみながら〜一緒にVB.NETを覚えましょう ---------------------------------------------------------------------------- <テキストボックス .MultLineと.Textプロパティ> どうも、三流プログラマーのKen3です。 飛ばして行く予定が、なかなか進まなくスミマセン。 今回は、やっと値のやり取りで使用するテキストボックスを使ってみます。 ┌ ─ ┐│└ ┘を使って、文字列を囲い ┌──────────┐ │文字列を囲ってみたい│ └──────────┘ こんな感じの文字列を作ってみたいと思います。 よく、メルマガでもボタンの説明や、 タイトルの説明でも見るよね。 まぁまぁ。 気楽に読んでください。 /* * 1. やりたいこと */ VBで楽しく と 文字列を受け取ったら、 ┌──────┐ │VBで楽しく│ └──────┘ と、ワクで囲まれた文字列を作ってみたいです。 画面イメージは、 ^^^^^^^^^^^ 変換元文字列 [ _______________________ ] ┌──┐ │変換│ のボタンを設置、 └──┘ 変換結果 [ _______________________ ] [ _______________________ ]←複数行入力表示可能なテキストボックスを作成 [ _______________________ ] 操作イメージは ^^^^^^^^^^^^^^ 変換元文字列に好きな文字を入力後、 変換のボタンを押す。 すると、変換結果が下のテキストボックスに表示される。 これを自分でコピーして使う(笑) /* * 2.フォームの作成 */ テキストボックスを貼って、簡単に作成します。 *ここで美的センスが問われるんだけど、まぁいいや(おいおい) 前回までのラベルは、 ユーザーからの入力が無い時に文字列の表示に使っていました。 今回は、ユーザーに入力してもらった値を使用するので、 テキストボックスを使います。 配置後、コントロールの名前を変えます。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ txtMOTO 変換元の文字列を入力するテキストボックス btnCONV 変換実行ボタン txtSAKI 変換結果の表示エリア 頭をtxt,btnの3文字にします。 (名称の規則が載ってるページをあとで探そう) 変更方法は簡単で、 コントロールを選択後、オブジェクト名を変更します。 (TextBox1とか自動で付いてるので、変更します) 同様に、btnCONVとtxtSAKIも変更します。 /* * 3.MultLineのプロパティをTrueにする */ 結果の文字列は、下記のように複数行になるので、 ┌──────┐ │VBで楽しく│ └──────┘ MultLineプロパティをTrueにします。 ^^^^^^^^ 方法は、簡単で、コントロールを指定(txtSAKI)、 プロパティの一覧から、 MultLineを探して、Trueにするだけです。 このプロパティがTrueじゃないと、 ワクを縦方向に伸ばせないので、 注意が必要です。 /* * 4.ボタンにClickイベントを書く */ いよいよ、終盤戦、気合を入れなおして。 次は、ボタンにClickイベントを書きます。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 方法は、簡単で、 ボタンのコントロールをダブルクリックすると、 いきなり Private Sub btnCONV_Click( ...... End Sub となり、コードを書き込めます。 /* * 5.テキストボックスの値の参照方法、と値の代入 */ ボタンが押されたら、変換処理を行います。 さてと、あれ?三流君、txtMOTOに入力された値って、どうやって取出すの? あと、結果をtxtSAKIにいれる時は? おっと、テキストボックスの値の表現方法ですよね、 これも簡単で、 Me.txtMOTO.Text か 省略形でそのままtxtMOTOと変数みたいに使えます。 簡単なテストを書くと、 Private Sub btnCONV_Click(ByVal sender As System.Object........ Me.txtSAKI.Text = Me.txtMOTO.Text & vbCrLf _ & "↑の文字数は" & Len(Me.txtMOTO.Text) _ & vbCrLf & "です" End Sub なんか、思ったより簡単ですよね。 txtSAKI.Text に txtMOTO.Text & vbCrLf & "↑の文字数は" & Len(txtMOTO.Text) & vbCrLf & "です" を代入してます。 *そのまま、txtMOTO.Text txtSAKI.Text でも使えるます。 txtSAKI.Text = txtMOTO.Text & vbCrLf _ & "↑の文字数は" & Len(txtMOTO.Text) _ & vbCrLf & "です" とme.が無くてもOKです。 見なれないvbCrLfは改行の定数です。 ~~~~~~~~~~~~~~~~~~ これで改行され、値を代入すると、txtSAKIに3行文字列が表示されてます。 /* * 6.ワクを作成するプログラムを書く */ ここまでで、必要な情報がそろったので、 ┌──────┐ │VBで楽しく│ └──────┘ のワク作成をしてみたいと思います。 Private Sub btnCONV_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnCONV.Click Dim i As Integer Dim strLINE1 As String '1行目 Dim strLINE2 As String '2行目 Dim strLINE3 As String '3行目 '1行目を作る strLINE1 = "┌" '初めに左上端を代入 For i = 1 To Len(txtMOTO.Text) '文字数分─を追加 strLINE1 = strLINE1 & "─" Next i strLINE1 = strLINE1 & "┐" '右上端を付ける '2行目を作る strLINE2 = "│" & txtMOTO.Text & "│" '両端に│を付ける '3行目を作る strLINE3 = "└" '初めに左下端を代入 For i = 1 To Len(txtMOTO.Text) '文字数分─を追加 strLINE3 = strLINE3 & "─" Next i strLINE3 = strLINE3 & "┘" '右下端を付ける '結果の代入 各ラインをvbCrLFでつなげただけ txtSAKI.Text = strLINE1 & vbCrLf & strLINE2 & vbCrLf & strLINE3 End Sub もう、ポイントも無いぐらい、 &で文字列をつなげる処理で書きました(笑) さて、テストしますか。 楽しくプログラム と 入れて、変換ボタンを押す。 あれ?なんか表示が変だ。 短いプログラムでもミスるとは、、、 良く見ろ三流プログラマー、フォントがプロポーショナルだからだよ、 テキストボックスのフォントを等倍に変えてみたら。 あっ、これかぁ。 テキストボックスのフォントプロパティを変えてと、 OKみたいですね。 そんなことであわてるから三流なんだよねキット。 /* * 7.終わりの挨拶 */ 今回は、 ・テキストボックス、ボタンの配置とテキストボックスマルチライン ・ボタンにイベントを書く ・テキストボックス値の参照、代入 でした。 Forの説明、Len関数の説明無かったですね、 あっ、、、すいません。早いうちにやります。 文字数数えて、プロパティをいじっているだけなんですね。 深く考えないで、なんだぁ〜簡単ジャン程度に思っててください。 次回からコントロールまわりをガーっと飛ばして行かないと、 これがVB.NETだぁ、までの道のりは長そうです。 気長に待てる人は、購読続けて下さい。 *解説、長くかかりそうなので。 補足(連絡用マガジン発行)で、細かく説明を発行します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ プログラム作りは簡単で面白いなぁと感じるような 解説/メールマガジンを書きたいと思ってます。 よろしくお願いします。 AB型の変わり者、三流プログラマーのKen3でした。