How to programmatically add PictureBox control to the tab page control - c#

How can I programmatically add a PictureBox control to a TabPage control and fit to its size?

PictureBox pb = new PictureBox();
pb.Dock = DockStyle.Fill;
tabPage.Controls.Add(pb);

The code would be look like:
var pb = new PictureBox();
pb.Image = Bitmap.FromFile(#"\\filepath");
pb.Dock = DockStyle.Fill;
yourTabPage.Controls.Add(pb);
But if your sole purpose for the tab page is displaying an image, you better use the 'BackgroundImage' of the tabpage itself and use its BackgroundImageLayout to maintain image size, this saves a bit of hassel compared to adding a PictureBox

Related

How do I display a PictureBox on a PictureBox in C#?

I want to display a PictureBox ontop of a Picturebox. I have a "mother" Picturebox and a button next to it. Everytime you click the Button a new PictureBox should be displayed on the "mother". I have created the PictureBox like this:
PictureBox newPictureBox = new PictureBox();
newPictureBox.Location = new Point(x:30,y:30);
newPictureBox.BackColor = Color.Red;
newPictureBox.Visible = true;
newPictureBox.Height = 200;
newPictureBox.Width = 200;
Now I have no idea how to display it to the user. I tried to use .Show() and
Call the GetChildIndex and SetChildIndex methods of the parent's Controls collection.
I also tried that. Either I don't know how to call it or it just doesn't work. Been searching for a solution for way too long. Does anybody have an idea of how to display that PictureBox on top of that pictureBox?
So turns out, I forgot to add the picture Box to the "mother" Picturebox. I added 1 line:
motherPictureBox.Controls.Add(newPictureBox);
So now my Code looks like this:
PictureBox newPictureBox = new PictureBox();
newPictureBox.Location = new Point(x:30,y:30);
newPictureBox.BackColor = Color.Red;
newPictureBox.Visible = true;
newPictureBox.Height = 200;
newPictureBox.Width = 200;
motherPictureBox.Controls.Add(newPictureBox);
Didn't need to bring it forward, I just forgot to add it...
you need to add new picturebox to form's controls
PictureBox NewPictureBox = new PictureBox();
NewPictureBox.BackColor = Color.Red;
NewPictureBox.Location = MotherPictureBox.Location;
NewPictureBox.Size = MotherPictureBox.Size;
this.Controls.Add(NewPictureBox);
NewPictureBox.BringToFront();

PictureBox image does not shrink, but PictureBox itself expand to fit the image

When I add a picturebox to the form at runtime, the picturebox acts exactly like I want. But when I add it to the panel, the pictureBox expands to fit the image.
Below is the code:
private PictureBox globalPicBox = (PictureBox)null;
private void Form1_Load(object sender, EventArgs e)
{
this.globalPicBox = new PictureBox();
this.globalPicBox.Name = "a";
this.globalPicBox.Tag = (object)"a";
this.globalPicBox.SizeMode = PictureBoxSizeMode.StretchImage;
this.globalPicBox.Top = 50;
this.globalPicBox.Left = 50;
this.globalPicBox.Height = 100;
this.globalPicBox.Width = 100;
this.globalPicBox.Image = Image.FromFile(#"C:\Users\PC\Downloads\Photo.jpg");
this.globalPicBox.BorderStyle = BorderStyle.FixedSingle;
this.globalPicBox.AutoSize = true;
this.panel1.Controls.Add((Control)this.globalPicBox);
}
What is the problem? And why?
Based on your edit ... set globalPicBox.AutoSize = false and it'll work.
If it doesn't please check the rest of your code for changes to globalPicBox's AutoSize, SizeMode and Dock parameters and hopefully you'll find your answer!
Simple Just Set globalPicBox.SizeMode=Strech
The image will shrink or stretch to meet the picturebox size and your picture box will not expand or shrink it will remain the same size

How do I show a full sized of image, from a click event?

I'm using a GridView to display some tabular data in a WinForm application.
I have a column for the table, which is stored as a VarBinary data type, which contains my image data.
How do I show the full size image, when one of them is clicked on?
I've just had to do similar thing, so I'll just give you the code
Form frm = new Form();
PictureBox pb = new PictureBox();
//pb.Image = Image.FromFile("my.bmp");
pb.Image = myImage;
pb.Dock = DockStyle.Fill;
frm.Controls.Add(pb);
frm.WindowState = FormWindowState.Maximized;
frm.ShowDialog();

User Control c# Add Dynamically

I create a user control dynamically in my code
UserControl myobject = new UserControl();
myObject contains a button etc.
when I add this control to my picturebox
picturebox.Controls.Add(myobject);
my picturebox's backgorund image is dissappeared.
Why?
note: the button can be seen however. I want picturebox to be seen also
Set transparent basckground color of your user control. This will make picturebox visible:
UserControlDisplay myobject = new UserControlDisplay();
myobject.BackColor = Color.Transparent;
picturebox.Controls.Add(myobject);
BTW I believe you have different name of user control. And yes, as #samjudson stated, PictureBox should not be used this way: try to use Panel with background image instead (approach will stay same - use transparent color to see parent control):
panel.BackgroundImage = // your image
UserControlDisplay myobject = new UserControlDisplay();
myobject.BackColor = Color.Transparent;
panel.Controls.Add(myobject);
Try this:
UserControl myobject = new UserControl();
Button but = new Button();
but.BackColor = Color.Gray
pic.BackColor = Color.Green;
myobject.Controls.Add(but);
pic.Visible = true;
pic.Controls.Add(myobject);
The PictureBox control is not meant to be used as a container. Try adding a parent Panel or similar and the adding the PictureBox and your custom control to the Panel control.

Dynamically created button in WPF

I'm try to do a bit of WPF, only really done windows forms until now and not a lot of that...
All I'm trying to do is to dynamically within code (not xaml) set a button to show an image and set the size of the button to auto size to the image.
The code below loads the image but it goes when the mouse is over the button and the button doesn't auto size to the image.
tbButtonPicture contains a local path on the PC to a bitmap e.g. C:\temp\my Artwork\test1.bmp
This what I have thus far which sits inside a loop:
Console.WriteLine(tbButtonPicture);
System.Windows.Controls.Button newBtn = new Button();
//newBtn.Content = i.ToString();
newBtn.Background = new ImageBrush(new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), tbButtonPicture)));
newBtn.Name = "Button" + i.ToString();
sp.Children.Add(newBtn);
i++;
Wrap your image in an Image control and set this as the button content and you should have your desired effect.
System.Windows.Controls.Button newBtn = new Button();
Image imageControl = new Image();
imageControl.Source = new BitmapImage(new Uri(BaseUriHelper.GetBaseUri(this), tbButtonPicture));
newBtn.Content = imageControl;
newBtn.Name = "Button" + i.ToString();
sp.Children.Add(newBtn);
i++;
But I totally agree with above comments:
try to solve your issues in xaml its much more easier. Read the suggested resources, they are really helpful.

Categories

Resources