ウィンドウとコントロールのサイズ制御
- ウィンドウとコントロールのサイズ制御について知りたいです。
- ウィンドウ(Form2)を最大化した時に、配置されたコントロールも大きくなる方法を教えてください。
- VisualBasic2010 Professionalを使用しています。
- ベストアンサー
ウィンドウとコントロールのサイズ制御
ウィンドウ(Form2)を最大化した時に、配置されたコントロールも大きくなるようにしたいのですが、どうしたらよいのでしょうか? Form2はForm1から ---------------------------------------------- Dim p As New Form2 p.WindowState = FormWindowState.Maximized p.Show() ---------------------------------------------- で呼び出しています。 Form2には Label や PictureBox を配置しています。 環境はVisualBasic2010 Professionalです。
- airtrek1987
- お礼率40% (26/64)
- Visual Basic
- 回答数1
- ありがとう数1
- みんなの回答 (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は制御したいコントロール名に変更してください
関連する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)が閉じてしまうのです。 そういう仕様なのでしょうか? ご存知の方、教えてください。よろしくお願いします。
- 締切済み
- Visual Basic
- 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")
- 締切済み
- Visual Basic
- PictureBoxの描画について
VB2005を使用してPictureBoxに線を描きました。 Dim g As Graphics = PictureBox1.CreateGraphics() g.DrawLine(p, X1, Y1, X2, Y2) 線は上手く描けたのですが、表示している画面(Form)を最小化して再度最大化すると、描いた線が消えてしまいます。FormをHideしてもう一度Showしても同じです。 この描画を消さないようにするには、どうすればよいでしょうか?
- ベストアンサー
- Visual Basic
- 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() ------------------------------------------------------------------------------
- ベストアンサー
- Visual Basic
- 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 何卒お願いいたします。
- ベストアンサー
- Visual Basic
- 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 以上、よろしくお願い致します。
- 締切済み
- Visual Basic
- モジュールからの呼び出し - 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上に配置し実行したところエラーが起きました。 この場合、どう書き換えればいいのでしょうか?
- ベストアンサー
- Visual Basic
- 「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にボタンや、テキストボックスを配置している時点でインスタンスはできてるのでは?と思っていました。 何かルールみたいなものなのでしょうか?
- ベストアンサー
- Visual Basic
- 最小化したフォームを元に戻す
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
- ベストアンサー
- Visual Basic
- 起動時に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
- ベストアンサー
- Visual Basic
お礼
ご回答ありがとうございます!! プロパティウィンドウでアンカーを全てONにしたのですが、 PictureBoxがめちゃくちゃな形になってしまいました。。。