没有从子窗体更新Picturebox

时间:2016-05-19 21:37:09

标签: c# winforms

这是对未发生的事情的一般概念,但假设:

http://i.imgur.com/ClBZqQg.png

每当我更新那里的URL字段时,两个带圆圈的图像/图片框应该同步。但这并不奏效。我想要的是每当我点击"完成"按钮。

我使用Profile.settings文件功能来保存配置文件图片字符串(Profile.Default.PROFILE_PICTURE)。我调试并发现我的Setup.Settings文件在两个脚本中都加载了值,但是" form_menu"不要更新迷你图片。

这是我的主要表单的初始化代码(带有小圆形图片框的表单)(我想要加载图片)。

public form_menu()
{
    selectedTab = 4;

    InitializeComponent();

    label2.Text = Profile.Default.USERNAME;
    MessageBox.Show(Profile.Default.PROFILE_PICTURE);
    try
    {
        pictureBox4.Load(Profile.Default.PROFILE_PICTURE);
    }
    catch (Exception)
    {
        Profile.Default.PROFILE_PICTURE = Setup.Default.AVATAR;
        pictureBox4.Load(Profile.Default.PROFILE_PICTURE);
    }

    System.Drawing.Drawing2D.GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath();
    gp.AddEllipse(0, 0, pictureBox4.Width - 3, pictureBox4.Height - 3);
    Region rg = new Region(gp);
    pictureBox4.Region = rg;

    pictureBox2.Location = new Point(Convert.ToInt32(pictureBox2.Location.X - (Profile.Default.USERNAME.Length + pictureBox2.Size.Width) * 3), pictureBox2.Location.Y);
    pictureBox3.Location = new Point(Convert.ToInt32(pictureBox3.Location.X - (Profile.Default.USERNAME.Length + pictureBox3.Size.Width) * 3) + pictureBox2.Size.Width, pictureBox3.Location.Y);
}

" Setup.Default.AVATAR"是另一个.settings文件,其中包含默认图像URL,以防用户定义的文件未加载。

当我上传图片并按"完成"这是我的子表单。按钮:

private void button2_Click(object sender, EventArgs e)
{
    if (!valid_image)
    {
        MessageBox.Show("There is no image to upload to your profile.", "Upload rejected", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }

    if (textBox1.Text != Profile.Default.PROFILE_PICTURE)
    {
        Profile.Default.PROFILE_PICTURE = textBox1.Text;
        Profile.Default.Save();                
    }

    this.Hide();
    form_menu form = new form_menu();
    form.Activate();
}

1 个答案:

答案 0 :(得分:0)

答案:

我刚刚通过处理原始表单然后重新创建它来解决了这个问题,所以一切都将被同步。

        this.Hide();
        Form form = Application.OpenForms["form_menu"];
        if (form != null)
        {
            form.Dispose();
        }
        form_menu open = new form_menu();
        open.Show();

因此不需要创建额外的变量或回调。