ウィンドウとコントロールのサイズ制御

このQ&Aのポイント
  • ウィンドウとコントロールのサイズ制御について知りたいです。
  • ウィンドウ(Form2)を最大化した時に、配置されたコントロールも大きくなる方法を教えてください。
  • VisualBasic2010 Professionalを使用しています。
回答を見る
  • ベストアンサー

ウィンドウとコントロールのサイズ制御

ウィンドウ(Form2)を最大化した時に、配置されたコントロールも大きくなるようにしたいのですが、どうしたらよいのでしょうか? Form2はForm1から ---------------------------------------------- Dim p As New Form2 p.WindowState = FormWindowState.Maximized p.Show() ---------------------------------------------- で呼び出しています。 Form2には Label や PictureBox を配置しています。 環境はVisualBasic2010 Professionalです。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

大きくしたいコンロトールの Anchorプロパティを4方向全部ONにしてやればいいですよ コードでやると Me.Button1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or _   System.Windows.Forms.AnchorStyles.Bottom) _   Or System.Windows.Forms.AnchorStyles.Left) _   Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) といった具合です Button1は制御したいコントロール名に変更してください

airtrek1987
質問者

お礼

ご回答ありがとうございます!! プロパティウィンドウでアンカーを全てONにしたのですが、 PictureBoxがめちゃくちゃな形になってしまいました。。。

関連するQ&A

  • VB.NET:モーダルで表示したフォームを最小化

    Form2をForm1の所有として、モーダルで表示しました。 '------------------------ Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdChildMdl.Click  'Form2を開く  Dim frmN As New Form2  frmN.ShowDialog(Me) 'MeはForm1 End Sub '------------------------ Form2が最小化された時に、親フォームであるForm1も最小化させたいと思い、 Form2のResizeメソッドに以下のようなコードを書きました。 '------------------------ Private Sub Form2_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize  Select Case Me.WindowState   Case FormWindowState.Minimized    '親フォームも最小化((1))    Me.Owner.WindowState = FormWindowState.Minimized   Case FormWindowState.Maximized    '親フォームも最大化((2))    Me.Owner.WindowState = FormWindowState.Maximized   Case FormWindowState.Normal    '親フォームも通常サイズ((3))    Me.Owner.WindowState = FormWindowState.Normal  End Select End Sub '------------------------ しかし、(2)、(3)は問題なく実行できるのですが、 (1)を実行すると、自フォーム(Form2)が閉じてしまうのです。 そういう仕様なのでしょうか? ご存知の方、教えてください。よろしくお願いします。

  • VB.NETでフォーム間でのコントロールの参照

    VB.NETでフォーム間でのコントロールの参照が うまくいかず困っています Windows フォーム Form1とForm2があります Form1にはリストビュー(name:ListView1)を配置しています Form1_LoadイベントでListView1にアイテムを追加します Form2を表示し、Form1のListView1のアイテム数を、 取得しようとすると 0 になってしまします どうすればForm2から取得できるのでしょうか? 次のように書いています Form1_Load イベント内 ListView1.Items.Add("Item1") ListView1.Items.Add("Item2") ListView1.Items.Add("Item3") MessageBox.Show(CStr(ListView1.Items.Count), "Form1") Dim Form2 As New Form2() Form2.Show() Form2_Load イベント内 Dim Form1 As New Form1() MessageBox.Show(CStr(Form1.ListView1.Items.Count), "Form2")

  • PictureBoxの描画について

    VB2005を使用してPictureBoxに線を描きました。  Dim g As Graphics = PictureBox1.CreateGraphics()  g.DrawLine(p, X1, Y1, X2, Y2) 線は上手く描けたのですが、表示している画面(Form)を最小化して再度最大化すると、描いた線が消えてしまいます。FormをHideしてもう一度Showしても同じです。 この描画を消さないようにするには、どうすればよいでしょうか?

  • vb2010で2つのフォームを同時制御

    vb2010でプロジェクトを作成しています。 Form1がメインで、Form2を観客用に用意しています。 Form1のButton1をクリックすると、Form2のPictureBox1に画像を表示させたく、 下のようなプログラムを書いたのですが、Form2に画像が表示されないばかりか、 「オブジェクト参照がオブジェクトインスタンスに設定されていません。」というエラーまではかれてしまいます。このエラーの意味もわからないほど、素人なのでわかる方どうかよろしくお願いします。 ------------------------------------------------------------------------------ Private Sub Form1_Load Dim g As New Form2 g.Show() ------------------------------------------------------------------------------ Private Sub Button1_Click Form2.PictureBox1.Image = Image.FromFile("C/xxxxxxx.png") Form2.Refresh() ------------------------------------------------------------------------------

  • 3フォームの重なり順を変えない方法+同時最小化

     今晩は、質問させていただきます。どうぞよろしくお願いいたします。 Form1(メインフォーム)の下にForm2を、 Form2の下にForm3を表示し、これらの順番が変わらないように致したく、 次のようにコーディングいたしました。 【Form1のコード】  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    Dim form2o As New Form2    Dim form3o As New Form3    Me.Owner = form2o    form2o.Show()  End Sub 【Form2のコード】  Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load    Dim form3o As New Form3    Me.Owner = form3o    form3o.Show()  End Sub  この状態のまま、タスクバー上のアプリケーション名をクリックした際の 最小化⇔普通化を(3フォームとも一緒に)させたいのですがうまくいきません。。  Form1に、下の【コード1】のようにコーディングいたしましたら、 タスクバーのForm1クリック(最小化) →3つとも最小化(成功)いたしますが、 Form1とForm2がタスクバー上から消えてしまい、Form1クリックによる最大化ができなくなります。  またForm3に、下の【コード2】のようにコーディングいたしましたら、 タスクバーのForm3をクリックしてもForm1が一回ちらつくだけで、最小化すらできません。。  まったく違うイベントを取る方法や、Owner指定方法自体を行わない方法でも結構でございますので、 何かこの動作をうまくできる方法はないでございましょうか?  ずっと悩んでおりますが、解決致しません。もしお詳しい方がいらっしゃいましたら, 是非ともアドバイスいただきたく、どうぞよろしくお願いいたします。 【コード1】   Public Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize     Dim form2o As New Form2     If Me.WindowState = FormWindowState.Minimized Then       Owner.WindowState = FormWindowState.Minimized       Owner.Owner.WindowState = FormWindowState.Minimized     ElseIf Me.WindowState = FormWindowState.Normal Then       Owner.WindowState = FormWindowState.Normal       Owner.Owner.WindowState = FormWindowState.Normal     End If   End Sub 【コード2】   Public Sub Form3_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize     If Me.WindowState = FormWindowState.Minimized Then       Form1.WindowState = FormWindowState.Minimized       Form2.WindowState = FormWindowState.Minimized     ElseIf Me.WindowState = FormWindowState.Normal Then       Form2.WindowState = FormWindowState.Normal       Form1.WindowState = FormWindowState.Normal     End If   End Sub  何卒お願いいたします。

  • Lineshapeコントロールの削除方法について

    VS(Visual Basic2012)でアプリケーションの開発をしております。 WindowsフォームアプリケーションにてForm上のPanelにコンテナされている Pictureboxに、Buttonをクリックする度にLineshapeコントロールを動的に配置するようにしています。 そこで、とある動作(他のButtonのクリックとか)で、 そのなかの特定のLineshapeコントロールを削除したいのですが、やり方がわかりません。 Lineshapeコントロールは以下のソースのように配置しています。 配置したコントロール名がわかれば削除できそうなのですが、コントロール名の取得の方法がわかりません。 配置したLineshapeコントロールを削除する方法があれば上記の方法以外でも構いません。 どなたかアドバイスいただけたら幸いです。 以下ソースです。 Dim canvas As New PowerPacks.ShapeContainer Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click Dim win As New LINESHAPE ' Set the form as the parent of the ShapeContainer. canvas.Parent = Me.PictureBox6 ' Set the ShapeContainer as the parent of the LineShape. win.Parent = canvas win.BorderWidth = 20 win.BorderColor = Color.LightBlue win_index = win_index + 1 win.SetIndx(win_index) win.SetAng(0) win.Name = "Win" & win_index win.SetX(Panel1.Width / 2) win.SetY(Panel1.Height / 2) win.X1 = win.GetX - 50 * Math.Cos(win.GetAng * Math.PI / 180) win.Y1 = win.GetY + 50 * Math.Sin(win.GetAng * Math.PI / 180) win.X2 = win.GetX + 50 * Math.Cos(win.GetAng * Math.PI / 180) win.Y2 = win.GetY - 50 * Math.Sin(win.GetAng * Math.PI / 180) '動的にイベントを関連付ける AddHandler win.MouseDown, AddressOf win_MouseDown AddHandler win.MouseUp, AddressOf win_MouseUp AddHandler win.MouseMove, AddressOf win_MouseMove End Sub Public Class LINESHAPE Inherits PowerPacks.LineShape Dim idx As String Dim ang As String Dim p_x As String Dim p_y As String Public Sub SetIndx(index As String) idx = index End Sub Public Sub SetAng(angle As String) ang = angle End Sub Public Sub SetX(xx As String) p_x = xx End Sub Public Sub SetY(yy As String) p_y = yy End Sub Public Function GetIndx() Return idx End Function Public Function GetAng() Return ang End Function Public Function GetX() Return p_x End Function Public Function GetY() Return p_y End Function End Class 以上、よろしくお願い致します。

  • モジュールからの呼び出し - Panel内こんとろ~る

    モジュールからあるフォームのラベルのテキストを変更する下記のようなプログラムがありました。 Dim Frm as New Form Dim i as integer(カウンタ用変数) Frm = New_Frm(変更するオブジェクトのフォーム名) i=0 for i=0 to 3 Frm.controls("Label" & i).text= i next このようなプログラムがあり、見た目・配置変更が容易という都合上でLabel1~3をPanel上に配置し実行したところエラーが起きました。 この場合、どう書き換えればいいのでしょうか?

  • 「New」キーワードを使ったFormの表示について

    よろしくお願いします。 VB2005で、Windowsアプリケーションを開発しています。 Formを開く時の「New」キーワードについてお伺いしたく、投稿しました。 手許の参考書に、Form1からForm2を開くときは、 Dim Form2 As New Form2 Form2.ShowDiaolog()  とか Dim NewForm As New Form2 NewForm.Show() と記載されていたんですが、「Dim Form2 As New Form2」や「Dim NewForm As New Form2」という部分は必ず必要なのでしょうか? Form2.ShowDiaolog()だけでも開きますが、これだけだと何か支障があるのでしょうか? Form2を「New Form2」とする意味がわかりません。Newを使って、Form2のインスタンスを作成しておく、と参考書にあったのですが、Form2にボタンや、テキストボックスを配置している時点でインスタンスはできてるのでは?と思っていました。 何かルールみたいなものなのでしょうか?

  • 最小化したフォームを元に戻す

    VB2005Expressにて開発を行っています。 最小化したフォームを元に戻せなくて困っています。 どなたかご存知の方がいらっしゃいましたらご教授願います。 下記の動作を実現したいと思っています。 ・Form1でボタンが押されたらForm2を表示する ・この際にForm1を最小化する ・Form2を閉じる ・この際にForm1を元に戻す(手前に表示する) 以下が作成したプログラムです。 ---モジュールにて下記を宣言 Module Module1 'オブジェクトの宣言 Public f1 As New Form1 Public f2 As New Form2 End Module ---Form1でForm2を開くボタンを押した場合の処理 Private Sub Button1_Click(ByVal sender~ 'Form2を表示 If f2 Is Nothing OrElse f2.IsDisposed Then f2 = New Form2 End If f2.Show() 'Form1を最小化する Me.WindowState = FormWindowState.Minimized End Sub ---Form2にて閉じるボタンを押した場合 Private Sub Button4_Click(ByVal sender~ f1.WindowState = FormWindowState.Normal ↑コレで実現できるかと思ったのですが、最小化されたままです・・・ End Sub

  • 起動時にPictureBox内に絵を描きたい

    VB2005において、Form1上にPictureBox1を配置し、 起動時にPictureBox内に絵を描きたいと思っています。 ApplicationEvensVb内に以下のように 本来PictureBox1のプロシージャ内に記述したコマンドを記述しましたが、 ・型PictureBox1.CreateGraphicsが定義されていません。 ・名前PictureBox1は定義されていません。 というエラーが出てしまいます。 無事に絵を描くにはどうしたらいいのでしょうか? Partial Friend Class MyApplication Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup Dim g As Graphics = New PictureBox1.CreateGraphics() g.DrawLine(Pens.Black, 0, 540, PictureBox1.Width, 540) End Sub End Class

専門家に質問してみよう