みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VS2005 line

Visual Basic 2005での質問です。

フォームが開いた時、線を一本ひくには
Private Sub Form1_Paint(ByVal sender As Object, ByVal e _
As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
e.Graphics.DrawLine(Pens.Black, 0, 25, Me.Width, 25)
End Sub
でわかりましたが、

ボタンを一個置いて、それをクリックした時、線を一本ひくにはどうしたらいいですか。

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
XXXXX.DrawLine(Pens.Black, 0, 25, Me.Width, 25)
End Sub

XXXXX.の所をなんて記述したらいいのでしょうか?

アクセスのVBAしか使ったことがないもので・・・

投稿日時 - 2006-02-18 23:08:41

QNo.1975555

困ってます

質問者が選んだベストアンサー

VB.NET や VB.NET 2003 の参考書でも十分に参考になりますよ。
Web サイトでは、一般の方が開設しているサイトでは、VB.NET や VB.NET 2003 から VB.NET 2005 になって変化した所を中心に書かれているような気がします。
まぁ仕方ないですね。これだけバージョンアップの間隔が短いと、毎回ゼロから書いてられないですからね。

Microsoft のサイトでは VB6.0 から VB 2005 に乗り換える人向けのコンテンツが連載中です。
http://www.microsoft.com/japan/msdn/vbasic/migration/

投稿日時 - 2006-02-19 21:05:39

お礼

ありがとうございます。
教えて頂いたMSのサイトにグラフィック関係があったので助かりました。
basicもずいぶん進化したものだと、感心してます(途方にくれてる!)。
行番号があって、goto文のあるbasicがなつかしいです。

投稿日時 - 2006-02-19 23:45:01

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

単純にボタンの Click イベントで線を引くだけなら

Private Sub Button1_Click(ByVal sender As System.Object, Byval e As System.EventArgs) Handles Button1.Click
  CType(sender, Button).Parent.CreateGraphics.DrawLine( _
    Pens.Black, 0, 25, Me.Width, 25)
End Sub

で大丈夫かと。
先の Paint イベントでは Form1 の Graphic を使ってましたので、Click イベントでも Form1 の Graphic を使う、と。
Click イベントの引数 sender は Button1 を表しますので、そいつの親(Parent)である Form1 の Graphic を使うというわけです。

ただし、このままだと Click 時に線を引くけど、その後は線を再描画しませんので、Form が別のウィンドウに隠れてしまうと線が消えてしまいます。

Button1 をクリックして線を引いたら、その線はいつまで有効なのかわかりませんので、勝手に解釈して「一度引かれた線は Form1 が閉じられるまで有効」とするならば、

Dim _clicked As Boolean = False

Private Sub Form1_Paint(ByVal sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  If Me._clicked Then
    e.Graphics.DrawLine(Pens.Black, 0, 25, Me.Width, 25)
  End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, e As System.EventArgs) Handles Button1.Click
  Me._clicked = True
  Me.Invalidate()
End Sub

とするとか。

投稿日時 - 2006-02-19 02:24:33

補足

ありがとうございます。
良回答でした。
VB2005の参考書はまだ少ないみたいで、ヘルプをみても良く理解できませんでした。
VB.Ver6とはだいぶ違うみたいで、どこか参考になるサイトはないでしょうか?
VB.NETの参考書でも2005の教科書になりますでしょうか?

投稿日時 - 2006-02-19 13:06:31