C# 我试图将PictureBox动态添加到TableLayoutPanel,但它';s未填充所选单元格

C# 我试图将PictureBox动态添加到TableLayoutPanel,但它';s未填充所选单元格,c#,winforms,picturebox,tablelayoutpanel,C#,Winforms,Picturebox,Tablelayoutpanel,我使用这部分代码来添加图片,但它是单元格的一半…但仍然无法工作 PictureBox pB = new PictureBox { Size = MaximumSize, Dock = DockStyle.Fill, BackgroundImageLayout = ImageLayout.Stretch }; OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) {

我使用这部分代码来添加图片,但它是单元格的一半…但仍然无法工作

PictureBox pB = new PictureBox {
  Size = MaximumSize,
  Dock = DockStyle.Fill,
  BackgroundImageLayout = ImageLayout.Stretch
};

OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK) {
  string path = ofd.FileName;
  pB.Image = new Bitmap(path);
}

tableLayoutPanel1.Controls.Add(pB, x-1, y-1);
Control control = tableLayoutPanel1.GetControlFromPosition(x - 1, y - 1);
control.Dock = DockStyle.Fill;
control.BackgroundImageLayout = ImageLayout.Stretch;

您混淆了一个
PictureBox
可以包含的两个图像:

  • 图像是具有各种功能的主要图像
  • BackgroundImage
    位于其下方,可用于以下用途:背景
您要设置
图像的布局
;它被称为

不确定您在何处以及如何设置
x
y
,但您现在应该可以看到完整的图像,尽管或多或少有些拉伸


您不需要在最后再次设置
SizeMode
Docking

Dock填充图片盒通常是不正确的。只有当图像是一个细节很少的纹理时,它看起来才有点得体。但是你永远不会使用TableLayoutPanel,你会自己将图像缝合在一起。考虑到你需要的SyMeMod属性已经被设置了。FlowLayoutPanel可能会稍微好一点。
PictureBox pB = new PictureBox
{
    Size = MaximumSize,
    Dock = DockStyle.Fill,
    SizeMode = PictureBoxSizeMode.StretchImage
};