• 締切済み

コントロール作成

visualBasic2008無料版 で コードによるコントロールの作成が突然できなくなりました。 質問1 システム変更ですか? 質問2 コードでボタンコントロールの作成コードを教えてください。 URLの貼り付けは、ご遠慮ください。

みんなの回答

回答No.3

VB2005で補足に提示したコードを実行してみたところ、実行時にNullReferenceExceptionが2箇所発生しました。エラーが発生しないよう、下記の通りに修正してみましたのでお試しくだされ。 Option Strict On Public Class Form1 Private bt() As Button Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load Array.Resize(Me.bt, 5) ' ※1 For i As Integer = 0 To 4 Me.bt(i) = New Button() ' ※2 With Me.bt(i) ' ※2 .Name = "bt" + i.ToString .Text = "ボタン" .Location = New Point(i * 30, 0) .Size = New System.Drawing.Size(80, 20) End With ' ※3 Me.Controls.Add(Me.bt(i)) ' ※3 Next End Sub End Class ※1については、動的配列の要素数が定義されていなかったので付け加えました。 ※2については、オブジェクト(ここではButton)が生成される前にWithを使っていることでNullReferenceが発生していたようです。入れ替えたらちゃんと動きました。 ※3については、特にエラーにはならなかったのですが、Withの内側でWithに使った変数を直接扱うのはトラブルの元になりやすいので、AddメソッドをWith~Endの外側に出しました。 あと、お気づきかとは思いますが、ボタンの幅が80なのに生成時の座標が30ずつしかずらしていないので、各ボタンの全景は見えていません。

gcqd75ce
質問者

お礼

使えるようになりました。 Array.Resize(Me.bt, 5) ' ※1 ココのコードがわかりませんが、ちょっと勉強してみます。 ありがとうございました。

  • mako_tyo
  • ベストアンサー率37% (61/161)
回答No.2

>質問1 システム変更ですか? システム変更とは何のシステム変更ですか? >質問2 コードでボタンコントロールの作成コードを教えてください。 Private bt As Button Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load Me.bt = New Button() Me.bt.Name = "bt" Me.bt.Text = "ボタン" Me.bt.Location = New Point(0, 0) Me.bt.Size = New System.Drawing.Size(80, 20) Me.Controls.Add(Me.bt) End Sub >コードによるコントロールの作成が突然できなくなりました。 エラーが出てビルドが通らないのですか? コントロールが作成できないわけないので、自分の作成手順、環境を見直してみてください。

gcqd75ce
質問者

お礼

1個しか作れないです。 Option Strict On Public Class Form1 Private bt() As Button Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load For i As Integer = 0 To 4 With Me.bt(i) Me.bt(i) = New Button() .Name = "bt" + i.ToString .Text = "ボタン" .Location = New Point(i * 30, 0) .Size = New System.Drawing.Size(80, 20) Me.Controls.Add(Me.bt(i)) End With Next End Sub End Class 大量に作れなくなりました (2日前からです。)

noname#187541
noname#187541
回答No.1

こんばんは。 質問1 普通に出来るのでシステム変更はありません。 質問2 フォームのロード時に作成します。 Private Button1 As System.Windows.Forms.Button 'フォームのLoadイベントハンドラ Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load 'Buttonクラスのインスタンスを作成する Me.Button1 = New System.Windows.Forms.Button() 'Buttonコントロールのプロパティを設定する Me.Button1.Name = "Button1" Me.Button1.Text = "押してね" 'サイズと位置を設定する Me.Button1.Location = New Point(10, 10) Me.Button1.Size = New System.Drawing.Size(80, 20) 'フォームに追加する Me.Controls.Add(Me.Button1) End Sub

gcqd75ce
質問者

お礼

1個生産だと使えるようです。 2日前は100個コントロールを生産できましたけど。 ちなみに大量生産コードも教えてください。 マイクロソフト社のシステム変更かな?

関連するQ&A

  • 【.NET】動的に作成したコントロールの操作

    動的に作成したコントロールのイベントハンドラから、 同じく動的に作成したコントロールを操作するにはどうすれば良いのでしょうか? どちらのコントロールもKani.csからForm1.csに追加するものです。 例) ・Form1.cs ~省略~ namespace Chef {  ~省略~  KANI kani = new KANI();  kani.form1 = this;  kani.KanaFire();  ~省略~ ・Kani.cs ~省略~ namespace Chef {  public class KANI{   public Form1 form1;   public void KaniFire(){    //ラベル作成    Label LabelTARABA = new Label();    LabelTARABA.Text = "かにふらい";    form1.Controls.Add(LabelTARABA);    //ボタン作成    Button ButtonZUWAI = new Button();    form1.Controls.Add(ButtonZUWAI);    ButtonZUWAI.Click += new System.EventHandler(ButtonZUWAI_Clicked);   }   public void ButtonZUWAI_Clicked(object sender, System.EventArgs e){    /*ここでLabelTARABAを操作したい*/   }

  • VC++ VS2005 タブコントロールに貼り付けたリストコントロールが消える

    こんばんは。 早速ですが質問です。 VC++ .NET MFCプロジェクトで リソースエディタでダイアログにタブコントロールを貼り付け(1)、 そこに同じようにリソースエディタでリストコントロールとボタンを 貼り付けたダイアログを作りました(2)。 1のタブコントロール上に2をソースで貼り付け 表示させ、2のInitDialogとボタンクリックのイベントを作成して Listコントロールに値を入れるということをしたのですが リストコントロールの表示が消えてしまいます。 マウスでリストコントロールが貼りついている位置にカーソルを当てるとその部分がでてきます。 原因のお分かりになるかたご回答よろしくお願いします。

  • 業務アプリによるユーザーコントロールの作成について

    業務アプリによるユーザーコントロールの作成について 業務アプリケーションの開発を 行おうとしています VB.net2010 システムはよくある 検索、結果一覧、参照、登録、などを実装予定です 開発前にまずVB.net標準のコントロールを継承カスタマイズし ユーザーコントロールを作成しようと考えています [質問] 一般的に独自のユーザーコントロールを作成するにあたり どのようなユーザーコントロールを用意するものでしょうか 主となる継承対象のコントロールは下記となります ・テキストボックス ・コンボボックス ・ラジオボタン ・チェックボックス ・データグリッドビュー 例)フォームに使用頻度の高いコントロールを配置し部品化する 例)テキストボックスに特殊文字しか入力できないような部品を用意する など箇条書き程度でもかまいませんのでお聞かせ願えると助かります ザックリとした質問で申し訳しないませんが 皆さんならどのようなコントロールを作るのか 今後の参考にさせて頂ければ幸いです よろしくお願いします。

  • 配列を利用したコントロールを作成して同一配列番号のコントロールを操作するには

    VB.NET2003を利用しています http://jeanne.wankuma.com/tips/control/arraycontrol.html こちらを参考にしてコントロールの配列を作成 ComboBox(i) Button(i) i=1 to 5(実際のコントロールのNameは違いますが便宜上このような記述にさせていただきました) として位置を変えながら配置していきました。  ComboBox   Button 1[不可 ▽] 1[ボタン]    可 2[不可 ▽] 1[ボタン] 3[不可 ▽] 1[ボタン] 4[不可 ▽] 1[ボタン] 5[不可 ▽] 1[ボタン] ComboBoxは同一イベントを使いたいと思っています ComboBox(i)のインデックス値が変わったらButton(i)のEnableを変更しようと思う場合どのように記述したらよいのでしょうか? 例:1が「不可」から「 可」に変わったら、1の「ボタン」というテキストを「押して」というテキストに変える と言うように同一配列番号のコントロールのプロパティを操作したいのです こういった場合はどのようにしたらよいのでしょうか 足りない情報などありましたらどんどんおっしゃってください よろしくお願いします

  • C# ユーザーコントロール作成

    C#で以下のようなユーザーコントロールを作成しています。 ・labelA、LabelBを2つ配置しただけのユーザーコントロール(UserA)を作成。 これをFormから動的に生成したいと考えています。 具体的には以下のようなコードを書きました。 UserA wUsr = new UserA(); wUsr.Location = new Point(1,1); this.Controls.Add(wUsr); この結果、ラベルはForm上に生成されなかったのですが、コードに間違いが あるのでしょうか?。 お分かりになるかたがいらっしゃればお教え頂ければと思います。 以上です。

  • ユーザーコントロールのコンテナ

    VB6から.NETへ移行したばかりの初心者です。 早速質問ですがVB6でユーザーコントロールを作成し「ControlContainer」プロパティを設定するとユーザーコントロールがコンテナ化する事ができたのですが.NETからプロパティが見当たらなくユーザーコントロールをコンテナ化することができません。 他の名前に変わっているのか、もしくは出来ないのか?!どなたかわかる方がいましたら助けてください。 宜しくお願い致します。 開発環境は「VisualBasic 2005 ExpressEdition」です。

  • ActiveXコントロールの作成(VB6)

    こんばんは。 今、VB6でActiveXコントロールを作成しようと思っています。 現在、標準EXEにて、プログラムが作ってあります。 動作としては、 1.スタートボタン(CmdStart)で開始 2.処理(外部の測定器によるデータ収集) 3.終了ボタン(CmdEnd)にてプログラム終了 です。 これをもとに、ActiveXコントロールを作成したいです。手元にある文献にしたがってほぼコピー&ペーストで作成しました。また、これの動作を調べるため、標準EXEのフォームを作成し、そのフォームにActiveXコントロールを貼り付けました。 ここで質問です。 Form_LoadはUserControl_Initializeに書き換えました。(これは文献に載っていました) 最後のプログラム終了がうまくいきません。 標準EXEでは Private Sub CmdEnd_Click() Unload Me End Sub と書いてプログラムを終了させていました。 ここを書き換えずにActiveXコントロールを実行させたらエラーが出ました。"Unload Me"を"End"に書き換えてみたら、サポートされていないと出ました。 CmdEndをクリックしてプログラムを終了させるにはどう書けばいいでしょうか? よろしくお願いします。

  • ページを自動作成

    ホームページ内に"新規作成"ボタンがあったとして、それを押したら新しいページが作成される、といったシステムはどのようなコードでしょうか?

  • visualbasicユーザーコントロール

    Visualbasic 2013 でユーザーコントロールを作成しております。 DataGridViewを継承したコントロールを作成しているのですが、 コンストラクタにフォント等の初期設定は組み込む事が出来ました。 追加で以下のような処理を組み込みたいのですが、 どのように実装すれば良いかお分かりの方がいらっしゃいましたら ご教授頂けますと幸いです。 ・マウスで右クリックした際の動作を組み込む

  • なぜエラーになるのでしょう?アクティブコントロール

    ちょっと変なやり方かもしれないのですが、都合上こうやりたいので教えてください。 フォーム1の中にフォーム2を入れてサブフォームとして フォーム2の中にコマンドボタンを一つ置きました。 そのコマンドボタンを押した時に、そのコマンドボタン名を取得したいのですがうまくできません。 フォームは20個ぐらいあってこれと同じ動きをしたいので、 フォームモジュールには Private Sub コマンド0_Click() Call アクティブコントロール名を取得する End Sub として、 標準モジュールにコードは書いています。 Sub アクティブコントロール名を取得する() Dim フォーム As String フォーム = Screen.ActiveForm.Name MsgBox "アクティブコントロール名" & Forms(フォーム).ActiveControl.Caption End Sub にすると、オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)になります。 そもそも、フォーム = Screen.ActiveForm.Nameの時点で、フォーム1になっています。 実際のコマンドボタンはフォーム2にあるのに。 なので、無理矢理 MsgBox "アクティブコントロール名" & Forms("フォーム2").ActiveControl.Caption にしたら、 実行時エラー2450 マクロの式またはVisualBasicコードで参照されている'フォーム2'が見つかりません。 という違うエラーになりました。 Sub アクティブコントロール名を取得する() Dim フォーム As String フォーム = Screen.ActiveForm.Name Forms("フォーム2").SetFocus MsgBox "アクティブコントロール名" & Forms("フォーム2").ActiveControl.Caption End Sub にすればいいのかな?と思ったら Forms("フォーム2").SetFocusでアウトでした。 もともとはサブフォームのコントロールから発信したイベントなのに、 サブフォームのコントロールの値が取れないのでしょうか? 実際のmdbファイルではコマンドボタンではなくテキストです。 ご回答よろしくお願いします。

専門家に質問してみよう