变量不接受价值

时间:2015-04-07 17:17:11

标签: c# winforms

我在A类中有一个布尔 control_refresh ,并且在一个内部A i的类中有一个函数,其中是control_refresh = true;。代码编译得很好。

file_1.cs

public partial class graficki_editor : Form
{
    ...
    internal bool control_refresh = false;
    ...
}

file_3.cs

public partial class graficki_editor : Form
{
    ...
    private void canvas_paint(object sender, PaintEventArgs e)
    {
        debug_label.Text = control_refresh.ToString();
    }
    ...
}

file_2.cs

internal class projekt : graficki_editor
{
    ...
    private void sloj_Checked(object sender, EventArgs e)
    {
        if (((CheckBox)sender).Checked)
                objekti.ElementAt(pan.Controls.IndexOf(((CheckBox)sender).Parent)).visible = true;
        else objekti.ElementAt(pan.Controls.IndexOf(((CheckBox)sender).Parent)).visible = false;

        control_refresh = true;
        canvas.Refresh();
    }
    ....
}

(不包括非相关代码)

sloj_Checked 的范围内,我可以设置 control_refresh ,并且在范围内它可以正常工作。但是当刷新控件并调用paint事件时,变量保持不变。

我的问题是如何更改变量?

应Scott Chamberlain的要求:

static void Main()
{
    ...
    Application.Run(new graficki_editor());
}

public partial class graficki_editor : Form
{
    ...
    public void novaSlika(int sirina, int visina, string ime, Color odabir)
    {  
        projekt nova = new projekt();
    }
}

2 个答案:

答案 0 :(得分:0)

您应该在sloj_Checked 方法

中调用Control.Invalidate Method
// canvas.Refresh(); // do not call refresh
canvas.Invalidate();

答案 1 :(得分:0)

public void novaSlika(int sirina, int visina, string ime, Color odabir)
{  
    projekt nova = new projekt();
}

您正在创建第二个表单,它是一个完全独立的窗口,您永远不会调用nova.Show()来查看它。这就是为什么当您更改父表单nova中的graficki_editor属性时,不会更改。