質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

1回答

980閲覧

WindowsFormにスクリプトからPictureBoxを追加できません

0x4F

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2020/05/07 06:53

質問
VisualStudioを使用してC#でWindowsFormアプリを制作しているのですが、PictureBoxを追加することができません。
以下のスクリプトをどのように変えれば問題を解決できるか教えていただきたいです。

使用しているソースコード

C#

1//PictureBoxを生成する関数 2public void AddCtrl(string txt, int x, int y, string ControlName,bool B) 3{ 4 var EmptyPictureBox = new PictureBox(); 5 EmptyPictureBox.Name = ControlName; 6 EmptyPictureBox.BackColor = Color.Transparent; 7 EmptyPictureBox.Location = new Point(x,y); 8 EmptyPictureBox.Click += new EventHandler(CtrlClickedEvent); 9 10 //Bitmap作成 11 var pic = new src.AutoPicture(); 12 Bitmap canvas= pic.MakePicture(txt);//文字を画像にする関数を使用 13 if (B) 14 { 15  canvas.RotateFlip(RotateFlipType.Rotate180FlipNone);//生成した画像を反転させる 16 } 17 EmptyPictureBox.BringToFront(); 18 EmptyPictureBox.Image = canvas; 19 EmptyPictureBox.Size = canvas.Size; 20 Controls.Add(EmptyPictureBox); 21} 22//.Net Framework 4.7.2を使用

試したこと・確かめたこと
エラーなどは出ておらず、すべての引数に値が代入されていました。
また、意図通りのBitmapが生成されていることが確認できました。

同メソッド内を以下のように書き換えると正常にLabelが生成されました

C#

1{ 2 var mes = new Label(); 3 mes.name = ControlName; 4 mes.text = txt; 5 mes.Location = new Point(x,y); 6 mes.AutoSize = true; 7 Controls.Add(mes); 8}

すでに以下の2つは試しました。
Application.DoEvents();
this.Refresh();

どのようにすればPictureBoxを生成できるか教えていただきたいです。
よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2020/05/07 07:15

var pic = new src.AutoPicture();  Bitmap canvas= pic.MakePicture(txt); この部分を  Bitmap canvas= new Bitmap(100, 100); と変更した状態で実行しましたが、正常にPictureBoxが生成されました。 EmptyPictureBox.BorderStyle = BorderStyle.FixedSingle; を追加して外枠を表示してみてどのようになりますかね? また、デバッガで作成されたイメージのサイズなど確認してみてはどうでしょうか?
0x4F

2020/05/07 08:18

外枠を追加してみましたが何も表示されませんでした。 また、デバッカー(this.Controls.結果ビュー)では狙い通りのPictureBoxが追加されており、Imageとコントーロール本体の座標やサイズ、名前などの情報が設定されていることを確認できました。 ちなみにVisibleもtrueに設定されていました。
0x4F

2020/05/07 08:22

また、PictureBoxが生成される場所をクリックしてもクリック時のイベントは実行されませんでした
YAmaGNZ

2020/05/07 09:22

var EmptyPictureBox = new PictureBox(); EmptyPictureBox.Name = ControlName; EmptyPictureBox.BackColor = Color.Red; EmptyPictureBox.Location = new Point(x, y); EmptyPictureBox.Size = new Size(100, 100); EmptyPictureBox.BorderStyle = BorderStyle.FixedSingle; Controls.Add(EmptyPictureBox); といった感じで最小限のものでも追加されませんかね? それでも表示されないのであれば、その場所に別のコントロールがあったりしませんか? Controls.Addの前にBringToFrontを行ってもZオーダーは変化しないのでControls.Addの後にBringToFrontを実行するようにしてみてください。
0x4F

2020/05/07 10:59

Controls.Add(EmptyPictureBox); Controls[ControlName].BringToFront(); と順番を変更したら表示されるようになりました。 丁寧な回答ありがとうございました。
YAmaGNZ

2020/05/07 13:42

解決したのであれば、解決済みにしてください。
guest

回答1

0

自己解決

Controls.Add(EmptyPictureBox); Controls[ControlName].BringToFront();

コントロールを追加してから最前面に移動させました。

投稿2020/05/07 13:48

0x4F

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問