- ベストアンサー
フォームが出力されません
- Visual Studio2019で作成したテンキー相当のフォームが表示されない。
- ソースコードの一部を編集したが、エラーが発生してコンパイルできない。
- Tkパラメータの指定を変更してみたが、フォームは表示されない。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> Partial Class Tenkey > Inherits System.Windows.Forms.UserControl 上記を見ると、Tenkeyクラスは、FormじゃなくてUserControlとして作成されていますね。 ということは、 Dim frm As New Form frm.ClientSize = New System.Drawing.Size(500, 500) Tk.Size = New System.Drawing.Size(500, 500) frm.Controls.Add(Tk) frm.Show() みたいに、フォームを生成してコントロール追加のコードを書けば何か表示されるかな?
その他の回答 (4)
- kawais070_1
- ベストアンサー率55% (517/935)
> フォーム作成時に自分で何か指定したから、こうなったのでしょうか? そうですね。ソリューションエクスプローラーからの追加のメニューを見ると、Form と UserControl が隣り合っているので、間違えてクリックしたのでしょう。間違えないように気を付けてね。
お礼
質問をフォローしていただき、ありがとうございました。 なるほど、自分でユーザフォームを間違えて選択した可能性が高いです。 3日間悩んだ問題が解決しました!勉強にもなりました。 本当にありがとうございました!!×3のお礼を言いたいです。
- kawais070_1
- ベストアンサー率55% (517/935)
Tk.Designer.vb というファイルが自動生成されているはずですが、それをメモ帳で開いて内容を補足にコピペしてもらえますか?その内容から何かわかるかもしれません。
お礼
いつも回答コメントを頂きありがとうございます。 補足は1回答につき1回のため、失礼とは思いますが、残りをここに貼り付けること、お許しください。 (文字数制限のため、 ボタン2~9の処理を削除しています) ' 'Button10 ' Me.Button10.BackColor = System.Drawing.Color.DarkSalmon Me.Button10.Font = New System.Drawing.Font("メイリオ", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) Me.Button10.ForeColor = System.Drawing.SystemColors.ActiveCaptionText Me.Button10.Location = New System.Drawing.Point(3, 279) Me.Button10.Name = "Button10" Me.Button10.Size = New System.Drawing.Size(95, 95) Me.Button10.TabIndex = 9 Me.Button10.Text = "0" Me.Button10.UseVisualStyleBackColor = False ' 'TextBox1 ' Me.TextBox1.Font = New System.Drawing.Font("MS UI Gothic", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) Me.TextBox1.Location = New System.Drawing.Point(63, 379) Me.TextBox1.Name = "TextBox1" Me.TextBox1.Size = New System.Drawing.Size(180, 26) Me.TextBox1.TabIndex = 12 ' 'Label1 ' Me.Label1.Font = New System.Drawing.Font("メイリオ", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) Me.Label1.Location = New System.Drawing.Point(3, 382) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(54, 26) Me.Label1.TabIndex = 13 Me.Label1.Text = "西暦" ' 'Label2 ' Me.Label2.Font = New System.Drawing.Font("メイリオ", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) Me.Label2.Location = New System.Drawing.Point(244, 382) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(38, 26) Me.Label2.TabIndex = 14 Me.Label2.Text = "年" ' 'Form1 ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.BackColor = System.Drawing.Color.Tan Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.TextBox1) Me.Controls.Add(実行) Me.Controls.Add(クリア) Me.Controls.Add(Me.Button10) Me.Controls.Add(Me.Button9) Me.Controls.Add(Me.Button8) Me.Controls.Add(Me.Button7) Me.Controls.Add(Me.Button6) Me.Controls.Add(Me.Button5) Me.Controls.Add(Me.Button4) Me.Controls.Add(Me.Button3) Me.Controls.Add(Me.Button2) Me.Controls.Add(Me.Button1) Me.ForeColor = System.Drawing.SystemColors.ActiveCaptionText Me.Name = "Form1" Me.Size = New System.Drawing.Size(285, 417) Me.ResumeLayout(False) Me.PerformLayout() End Sub Friend WithEvents Button2 As Button Friend WithEvents Button3 As Button Friend WithEvents Button4 As Button Friend WithEvents Button5 As Button Friend WithEvents Button6 As Button Friend WithEvents Button7 As Button Friend WithEvents Button8 As Button Friend WithEvents Button10 As Button Friend WithEvents TextBox1 As TextBox Friend WithEvents Label1 As Label Friend WithEvents Label2 As Label Friend WithEvents Button9 As Button Friend WithEvents Button1 As Button End Class
補足
ありがとうございます。 Tk.Designer.vb はなかったのでTenkey.Designer.vbを下記に貼り付けます。 ただ4000文字以降、投稿ができないため、同じようなボタン2~9のボタン処理を削除し まずは前半を送付いたします。よろしくお願いします。 <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> Partial Class Tenkey Inherits System.Windows.Forms.UserControl 'UserControl1 は、コンポーネント一覧に後処理を実行するために dispose をオーバーライドします。 <System.Diagnostics.DebuggerNonUserCode()> Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Windows フォーム デザイナーで必要です。 Private components As System.ComponentModel.IContainer 'メモ: 以下のプロシージャは Windows フォーム デザイナーで必要です。 'Windows フォーム デザイナーを使用して変更できます。 'コード エディターを使って変更しないでください。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Dim クリア As System.Windows.Forms.Button Dim 実行 As System.Windows.Forms.Button Me.Button1 = New System.Windows.Forms.Button() Me.Button2 = New System.Windows.Forms.Button() Me.Button3 = New System.Windows.Forms.Button() Me.Button4 = New System.Windows.Forms.Button() Me.Button5 = New System.Windows.Forms.Button() Me.Button6 = New System.Windows.Forms.Button() Me.Button7 = New System.Windows.Forms.Button() Me.Button8 = New System.Windows.Forms.Button() Me.Button9 = New System.Windows.Forms.Button() Me.Button10 = New System.Windows.Forms.Button() Me.TextBox1 = New System.Windows.Forms.TextBox() Me.Label1 = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label() クリア = New System.Windows.Forms.Button() 実行 = New System.Windows.Forms.Button() Me.SuspendLayout() ' 'クリア ' クリア.BackColor = System.Drawing.Color.LightGray クリア.Font = New System.Drawing.Font("メイリオ", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) クリア.Location = New System.Drawing.Point(95, 279) クリア.Name = "クリア" クリア.Size = New System.Drawing.Size(54, 95) クリア.TabIndex = 10 クリア.Text = "消去" クリア.UseVisualStyleBackColor = False AddHandler クリア.Click, AddressOf Me.クリア_Click ' '実行 ' 実行.BackColor = System.Drawing.Color.LightYellow 実行.Font = New System.Drawing.Font("メイリオ", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) 実行.Location = New System.Drawing.Point(145, 279) 実行.Name = "実行" 実行.Size = New System.Drawing.Size(137, 95) 実行.TabIndex = 11 実行.Text = "実行" 実行.UseVisualStyleBackColor = False AddHandler 実行.Click, AddressOf Me.実行_Click ' 'Button1 ' Me.Button1.BackColor = System.Drawing.Color.DarkSalmon Me.Button1.Font = New System.Drawing.Font("メイリオ", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) Me.Button1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText Me.Button1.Location = New System.Drawing.Point(3, 188) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(95, 95) Me.Button1.TabIndex = 0 Me.Button1.Text = "1" Me.Button1.UseVisualStyleBackColor = False ' ' ボタン2~9迄を削除しました。
- kawais070_1
- ベストアンサー率55% (517/935)
じゃあ、 Tk.Show() の次に Tk.WindowState = FormWindowState.Maximized でどうかな?
補足
ありがとうございます。 やってみました。 今度は、追加したTk.WindowState = FormWindowState.Maximizedの行で、 エラー BC30456 'WindowState' は 'Tenkey' のメンバーではありません。 win_form_app C:\Users\xxxxxx\source\repos\win_form_app\win_form_app\Tenkey.vb と、コンパイラエラーとなります。 フォームのどこかおかしいのでしょうか? Tenkey.vb[デザイン]は、ツールボックスの部品のボタンで作っています。
- kawais070_1
- ベストアンサー率55% (517/935)
Dim Tk As New Tenkey の次の行に Tk.Show() が必要かな?
補足
ご回答ありがとうございます。 コンパイルエラーとなるため★の行をコメントアウトし、ご指摘のようにTk.Show()もいれてみましたが、やはり表示されません。(msgboxの”テンキーを出力します”はでます) そもそも、Application.Run(Tk)で、オーバーロードのエラーになるのは もう、フォームが読み込まれているからでしょうか?(ならなぜ出力されないか不思議です)
補足
ありがとうございます!!! ついに、ついに一瞬ですが表示されました。 表示されたフォームが一瞬で消えるため、frm.Show()ではなく従来の Application.Run(frm) とすることで、目的が達成できました。 ただ > Partial Class Tenkey > Inherits System.Windows.Forms.UserControl のUserContorollは、フォーム作成時に自分で何か指定したから、こうなったのでしょうか? (UserContorollとなっている場合は、「フォームを再度定義して、それに自分の作ったものを 継承?させて表示させればよい」とも理解できました) ですが、自動的にその指定にならないのでしょうか?または、UserControllの部分を 自分で何かに変えてやれば、上記の対応をしなくても自分のフォームをそのまま使えるのでしょうか?