• 締切済み

Imports 文についての疑問!(VB2008)

約40日余りのVB.NET 初学者です。 そこで、この間の学習で疑問に思った諸点について質問します。 疑問: Imports 文についての疑問! Imports System.Windows.Forms ' ================================================== ' グラフィックス・メソッドで "hello, world" と描画 ' ================================================== Public Class frmMain   Private Sub frmMain_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles Me.Paint     Dim msg As String = "hello, world"     Dim aFont As New Font("Arial", 12)     e.Graphics.DrawString(msg, aFont, Brushes.Black, 0, 0)   End Sub End Class Imports 文でインポートした場合の EXE は 16384 バイト。 e As System.Windows.Forms.PaintEventArgs と書いても EXE は 16384 バイト。 「ならば、Imports 文を書けばいいじゃないか?」と思います。 この辺りの事情が判りません。 私の推測は、次のようです。 ・インポート文は名前空間やクラスに置換されるとは限らない。 ・置換は全体のテキストをチェックした後に必要な限りで行われる。 しかし、真相は不明。 自分なりのスタイルとか作法とかを確立する上で多少喉に刺が刺さった感があります。 この疑問の解消に手を貸して頂ければ幸いです。

みんなの回答

  • yaguma
  • ベストアンサー率57% (4/7)
回答No.1

クラスを指定するときに、いちいち完全修飾名で記述するのは煩雑だと感じるならImportsステートメントを利用すればいいと思いますし、 どの名前空間に属するクラスなのかを明示することに重きを置くなら完全修飾名を利用すればいいのではないでしょうか。 Importsステートメント自体は、完全修飾名を省略できるようにしたり、名前空間に別名をつけたりする機能に過ぎないので、あとは好みの問題だと思います。 exeのサイズに関しては、完全修飾名で記述しようがインポートして直接クラス名を記述しようが、ビルドしてしまえばまったく同じ実行ファイルができそうな気がします。これは推測ですが。

noname#140971
質問者

お礼

>Importsステートメント自体は、完全修飾名を省略できるようにしたり、名前空間に別名をつけたりする機能に過ぎないので、あとは好みの問題だと思います。 ここんところが今一つ納得いきません。 事実上、そのようになっているとは思いますが・・・。 コンパイルの前処理との関係で、どうにも今一つスッキリしません。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB2010で、2つめのフォームを表示させると、フォームを閉じるまで1

    VB2010で、2つめのフォームを表示させると、フォームを閉じるまで1つめのフォームの操作ができないのですが、どなたか解決方法を御存じないでしょうか。 よろしくお願いします。 Form1のピクチャーボックスに描いた折れ線グラフ上のカーソル(Form11)が、 マウスの動きに合わせてグラフ線上をたどっていくようにしようとしています。 【Form1のボタンを押すと2つめのフォームを呼び出す】 Dim Mark As New Form11 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 'グラフカーソル表示 Mark.Show() 【呼び出されたフォームのコード】 Imports System.Drawing Public Class Form11 Private Sub Form2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 'フォームのクライアント領域のサイズを設定 Me.ClientSize = New System.Drawing.Size(20, 20) 'カーソルを描く Dim MarkPen As New Pen(Color.Red, 1) Dim g As Graphics = e.Graphics g.DrawEllipse(MarkPen, 0, 0, 20, 20) '円の描画 Me.TopMost = True '最全面 Me.TransparencyKey = Me.BackColor '透明色の設定 Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None '枠なし End Sub End Class

  • グラフィックスの読み取りについて。

    Option Strict On 'VisualBasic2008(無料版) Imports System.Drawing.Drawing2D Public Class Form1 Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint Dim myFont As New Font("Arial", 20, FontStyle.Bold) e.Graphics.DrawString("7", myFont, Brushes.Red, 0, 0) End Sub End Class 例えば、こんな感じのプログラムがあるとします。 PictureBox1のサイズは25*25です。 PictureBox1内のグラフィックスの読み取りがしたいのです。 質問__1 ドット単位で625のデータをARGBで読み取り配列に格納したいです。 質問__2 グラフィックスが表示されてる場合は1を代入、表示されてない場合は0を代入、配列に入れたいです。イチゼロデータを作りたいです。 よろしくお願いします。

  • VB2008 PaintイベントとResize

    VB初心者です VisualStudio2008 VBを使用しております 早速質問なのですが Form1にPictureBox1があり、プロパティDockがFillとします このピクチャーボックスの色を赤にして、左上から中心に向かって線を引きたいのですが Public Class Form1 Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint Dim p1XC, p1YC As Integer p1XC = PictureBox1.Width / 2 p1YC = PictureBox1.Height / 2 e.Graphics.Clear(Color.Red) e.Graphics.DrawLine(Pens.Black, 0, 0, p1XC, p1YC) End Sub -------------------------------------------------------------------------------- Private Sub PictureBox1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.Resize Dim p1XC, p1YC As Integer p1XC = PictureBox1.Width / 2 p1YC = PictureBox1.Height / 2 Dim g As Graphics = PictureBox1.CreateGraphics g.Clear(Color.Red) g.DrawLine(Pens.Black, 0, 0, p1XC, p1YC) End Sub End Class ↑は、おかしいですよね? eに書いてるのかgに書いているのか・・・ そもそも←の考え方がおかしいのか eの扱いがよくわからないです。 *同じ色だとわからないですが、色違いにすると大きくした時は増えた部分しか書かれてない *ペイントのみにしてしまうとサイズを小さくしたときに中心に線がいかない *リサイズのみだと元の部分しか塗られない こういう場合どうするのがいいのしょうか? 実際はもっと複雑な絵を描きたいので、イベントと描写を分けたいと思っているのですが・・・ どなたかご教示下さい。

  • 【VB2008】 .MouseEnter時にe.Graphics.DrawString~をする方法

     今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  ボタンの文字を見やすくするため影付き文字にいたしておりますが (下のコード1になります),このボタンにMouseEnterした際に, クリックできることが分かりやすいよう影の色を変えようと思ったのですが やり方が見つけられません...  <コード1>  Private Sub Button1_Paint(ByVal sender As   Object, ByVal e As System.Windows.Forms.PaintEventArgs) _   Handles Button1.Paint     e.Graphics.DrawString("TEST", _     New Font("MS Pゴシック", 10), Brushes.Black, 81, 11)     e.Graphics.DrawString("TEST", _     New Font("MS Pゴシック", 10), Brushes.Red, 80, 10) End Sub  <トライしたコード>  Private Sub Button1_MouseEnter(ByVal sender As   Object, ByVal e As System.EventArgs) _   Handles Button1.MouseEnter     e.Graphics.DrawString("Test", _     New Font("MS Pゴシック", 10), Brushes.White, 81, 11)     e.Graphics.DrawString("Test", _     New Font("MS Pゴシック", 10), Brushes.Red, 80, 10)  End Sub  エラー「'Graphics'は'System.EventArgs'のメンバではありません」と なるのは当然だと思うのでございますが,引数「e As ~」を書き直すなどいたしましても 通りませんorz  別の方法で「.Paint時に描いた文字色はそのままで,.MouseEnter時に .ForeColorを変えれば...」などと考えましたが,ButtonのTextが .Paintで描いた文字より上にくるのでうまくできませんでした...  もしとんちんかんなご質問でしたら申し訳ございません.何かよさそうな 方法がございましたらご紹介いただけないでしょうか.  もしお詳しい方がいらっしゃいましたら,是非ともアドバイスいただきたく お願い申し上げます.

  • 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しか使ったことがないもので・・・

  • VB.NET フォーム上に描いたグラフィックのクリア方法

    最近、VB6からVB.NET 2003へプログラムの移行作業を始めたものです。極々基本的なことなのかもしれませんが、.NETでフォームに描いたグラフィック(線や円など)を消去するコードがなかなかうまく書けず困っています。 VB6でしたら Form**.Cls だけで消えるのですが、それに対応するコードはどのように記載すれば宜しいでしょうか? ヘルプなどで見るとClearメソッドを使用するとありましたが、どうもうまく動きません。 例えば、以下の簡単な例でしたらどのように変えれば宜しいでしょうか? 宜しくお願いいたします。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   Dim grph As System.Drawing.Graphics   grph = Me.CreateGraphics   grph.DrawLine(Pens.Red, 50, 25, 200, 150)   ClearScreen(e) End Sub Public Sub ClearScreen(ByVal e As PaintEventArgs)   Dim BGcolor As Color   BGcolor = Color.FromArgb(0, 0, 0)   e.Graphics.Clear(BGcolor) '背景色 End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click   ClearScreen(e) End Sub

  • VB.NETのグラフィック描画について

    グラフィック描画ですが、引数を持たないサブルーチンプロシージャ(固定的な 目盛り等)は、PictureBox_paint(***イベントプロシージャ内に記述すればグラフィック描画ができます(e.Graphicsでグラフィックスオブジェクトを取得できる為)が、 X、Y座標を引数としたサブルーチンプロシージャを作り、その中でLineDraw(*****で描画させたい場合サブルーチンプロシージャ内に dim g As Graphics=pictureBox1.CreateGraphics() でグラフィックオブジェクトを生成しても 描画できないのですがどのようにすれば解決できるでしょうか(イメージがわかり難いかもしれませんのでサンプルを書きました) よろしくお願いします (1)private sub pictureBox1_paint(Byval sender as Object, Byval e as system****** e.Graphics.DrawLine(****** (これは描画できる) End Sub (2)private sub zahyou() ' 座標を生成するサブルーチンプロシージャ dim i as integer for i=0 to 10 hyouji( i , i*5 ) End Sub private sub hyouji( x as integer, y as integer) ’直線を引くサブルーチンプロシージャ dim g As Graphics=pictureBox1.CreateGraphics() g.DrawLine(***,x,y**** (これは描画できない)

  • VB2005 フォームの再表示

    プログラムを終了する時、“プログラムを終了しますか?”というメッセージを表示し“はい”ボタンを押すとプログラムを終了、“いいえ”ボタンを押すとプログラムを終了しないようにしたいのですが、“いいえ”ボタンを押すとフォームが消えてしまいます。この時プログラムは終了していません。消えているフォームを再度表示したいのですが、どうしたら良いのか分かりません。Me.Show()、Me.Refresh()とかを使用しても表示されません。現在のコードを記載しますのでどなたか教えて下さい。よろしくお願いします。 Private Sub MainDisp_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed Dim resources As System.ComponentModel.ComponentResourceManager _ = New System.ComponentModel.ComponentResourceManager(GetType(MainDisp)) Dim msg As String Dim ret As String Beep() msg = My.Resources.msg001 resources.ApplyResources(msg, "msg") ret = MsgBox(msg, MsgBoxStyle.YesNo + MsgBoxStyle.Question, My.Resources.msg002) If ret = vbYes Then End Else Me.Show() Me.Refresh() End If End Sub

  • グラフックが消えてしまう

    vb2010expressの初心者です シリアル通信で温度が送られてきます。それをTimer1を使って定期的に グラフ化して表示しています。プログラムは Private Sub Timer1_Tick grph =PictureBox1.CreateGraphics() grph.DrawEllipse(Pens.Black, x, y, 2, 2) と、ここまではなんとか成功しています。ところが別のアプリを起動したりして グラフが隠れてしまうと、これまで描いたグラフが消えてしまいます。そこで paintでやってみたんですが、たしかに一度目のデータは消えないけど今度は 二番目からのデータが更新されずかたまったままです。プログラムは Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As _    System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint e.Graphics.DrawEllipseLine(Pens.Red, x, y, 2, 2) なんかむづかしいですね。どうしたらいいんでしょうか。

  • 描画した後での塗りるぶし VB

    丸を描画後にColorDialogで指定された色で丸の範囲だけ塗りつぶすというプログラムを作っているのですが、なかなかうまくいきません。 丸は、このように描画するようにしています。 Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove If (e.Button = MouseButtons.Left) Then Dim g As Graphics = PictureBox1.CreateGraphics() Dim ePos As MouseEventArgs PictureBox1.Refresh() g.DrawEllipse(New Pen(Color.Black, 2), Spos.X, Spos.Y, e.X - Spos.X, e.Y - Spos.Y) ePos = e g.Dispose() End If End Sub Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown If (e.Button = System.Windows.Forms.MouseButtons.Left) Then Spos = e End If End Sub VB2010を使っています。 どなたか教えていただけるとありがたいです。よろしくお願いします。