2017-02-18 29 views
-2

実行時にpictureBoxをロードしようとしました。実行時エラーはありません。しかし、PictureBoxは表示されません。動的に作成されたPictureBoxはC#で表示されません

後でInitializeComponent()も追加しましたが、それは役に立ちませんでした。

マイコード:

private void button1_Click(object sender, EventArgs e) 
     { 
      PictureBox picLoadingNew = new PictureBox(); 
      picLoadingNew.BackColor = System.Drawing.Color.Transparent; 
      picLoadingNew.Image = global::QuiDip.Properties.Resources.ajax_loader_Long; 
      picLoadingNew.Location = new System.Drawing.Point(790, 760); 
      picLoadingNew.Name = "picLoadingNew"; 
      picLoadingNew.Size = new System.Drawing.Size(142, 22); 
      picLoadingNew.Dock = DockStyle.Fill; 
      //InitializeComponent(); 
      this.Controls.Add(picLoadingNew); 
      picLoadingNew.Show(); 
      picLoadingNew.Visible = true; 
     } 
+0

picLoadingNew.Refresh()を追加してください。これをリフレッシュ()します。ボタンクリックメソッドの終わり。または、picLoadingNew.Update();を試すことができます。これらがうまくいかない場合は、画像ボックスに表示しようとしている画像を確認してください。 –

+1

サイズと場所を設定してからDockStyle.Fillを使用するのはあまり意味がありません。少なくともbutton1とおそらく重なり合っています。 picLoadingNew.BringToFront()を追加すると、いくつかのオッズが表示されます。デザイナーと共に追加し、VisibleプロパティをFalseに設定してください。それを見るためにあなたがしなければならないのは、* true *に設定することだけです。 –

答えて

0

あなたのコードは動作するはずですが、少し問題があります。イメージが別のイメージの同じ場所に正確に配置されていて、そのサイズが同じであれば、イメージは表示されません。画面上の現在の画像の後ろにあります。

ショーや可視コールを削除するが、ところでBringToFront関数

this.Controls.Add(picLoadingNew); 
// picLoadingNew.Show(); 
// picLoadingNew.Visible = true; 
picLoadingNew.BringToFront(); 

への呼び出しを追加し、あなたが利用可能なスペースを埋めるためにそれを求めるなら、あなたの新しいイメージに特定のサイズを与えることにポイントするものですその容器に?

+0

注意してdownvoteにコメントしますか?私は本当に答えに何か間違っているかどうかを知ることに興味があります。 – Steve

+0

ええ、それは私を助けた。Upvoted :) – Santosh

+0

喜んで助けになる。あなたはここでは新しいユーザーではありませんが、サイトではあまり活発ではないようですので、[回答を受け入れる方法はどうなっていますか]を読むことをお勧めします(http://meta.stackexchange.com/questions/5234 /受け取り - 応答 - 仕事)を受け入れるかどうかを決定し、受け入れられた回答(もしあれば) – Steve

0

これはデフォルトであるため、表示する必要はありませんが、必ずthis.Controls.Add(picLoadingNew)が必要です - フォームが親になり、パネルなど。 PictureBoxがパネルのような別のコントロールの上に座っている場合は、実際には:panel.Controls.Add(picLoadingNew) - 現在のthis.Controls.Add(picLoadingNew)行ではありません。

picLoadingNew.Location =新しいSystem.Drawing.Point(5、:私はあなたのコードであまりにも何か問題が、あなたにピクチャボックスのデフォルトの場所を変更されて見ることができないように私が最初にしようと何

5)。

.Dock行を削除します。

これは、(フォームのサイズに応じて)画面からピクチャボックスをオフに設定している可能性があります。これは、何が間違っているかを推測するためのものです。 PictureBoxが画面外にある場合、新しい座標は左上に表示されますので、間違いなく表示する必要があります。それが動作していることがわかったら、コードを実際に動作させたことを証明した後、アンカーを設定し、アンカーを設定することができます。

設定が.SizeMode = StretchImageの場合は、画像が大きすぎて「オフスクリーン」である場合に便利です。 StretchImageは、指定した現在の.Sizeディメンションを持つPictureBoxの内部にうまく収まるようにイメージのサイズを変更します。以下のような

何か:

PictureBox picLoadingNew = new PictureBox(); 
picLoadingNew.BackColor = System.Drawing.Color.Transparent; 
picLoadingNew.Image = global::QuiDip.Properties.Resources.ajax_loader_Long; 
picLoadingNew.Location = new System.Drawing.Point(5, 5); 
picLoadingNew.Size = new System.Drawing.Size(142, 50); 
picLoadingNew.SizeMode = PictureBoxSizeMode.StretchImage; 
parent.Controls.Add(picLoadingNew); 

上記のコードは(もちろん私自身の画像を使用して!)私のために働きました。

希望に役立ちます。

関連する問題