winforms windows窗体,c#根据所选标签传递值

yfwxisqw  于 2022-12-23  发布在  Windows
关注(0)|答案(3)|浏览(186)

我有一个小游戏,这个游戏有5个不同的窗口形式,每个窗口有不同的设计。
第一:欢迎页面,游戏和规则第二:等级选择三:第四局:商店购买小工具
我用它来打开新窗口并关闭上一个窗口

FormMain formMain = new FormMain();
            formMain.Show();
            this.Hide();
        }

在表单发送和表单接收这两种情况下,我如何将变量传递给新页面?

formMain.Show(x, y);

但是表演课还包含着其他的东西。
我的观点是:
1-根据标签shosen与水平(1,2,3,4,5),我传递不同的值给敌人,所以我不必创建一个形式到每个水平。
2-选择小工具在商店传递到游戏形式,以增加玩家获胜。

vaqhlq81

vaqhlq811#

有吨的选择,但我列出几个:
1通过Form/Class的构造函数传递数据

public ClassName(int var1, int var2)
{
    //do something with var1 and var2
}

如果你想用传递的数据做一些动画,这可能不是最好的选择。
2创建类后设置公共变量

public class ClassName()
{
    public int var1, var2;
}

代码中的其他位置

ClassName clObject = new ClassName();
clObject.var1 = 1;
clObject.var2 = 2;
clObject.Show();

3调用方法传递数据

public class ClassName()
{
    private int var1, var2;
    public void DoTheThing(int var1, int var2)
    {
         //do something with the data
    }
}

代码中的其他位置

ClassName clObject = new ClassName();
clObject.Show();
clObject.DoTheThing(1,2);
hc2pp10m

hc2pp10m2#

您可以创建第二个窗体的示例,并轻松访问公共方法。

// Click Event On First(Main) Form
private void ParameterSelect_Click(object? sender, EventArgs e)
        {
            try
            {
                    string value = "Test";
                    var secondFormInstance = new SecondForm();             
                    var result = secondFormInstance.SwitchExampleMethod(value);
                    if (result != null)
                    {
                        Console.WriteLine($"{result}");
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error($"Error while click event. Error: {ex.Message}");
            }
        }
// Second Form Method
public string SwitchExampleMethod(string value)
        {
            try
            {
                switch (value)
                {
                    case "Test":
                    case "Test1":
                    case "Test2":
                    case "Test3":
                        return "This value string for just a Test.";
                    case "Insane":
                    case "Wow":
                        return "This is amazing string text.";
                    default:
                        return "This is default string text.";
                }
            }
            catch (Exception ex)
            {
                Log.Error($"Error on switch. Error : {ex.Message}");
                return $"Error on switch. Error : {ex.Message}";
            }
        }
6gpjuf90

6gpjuf903#

根据您的描述,建议您使用静态变量传值的方法,该方法传值是双向的。
示例代码如下所示:

在应用程序类中定义静态成员值:

public class app
    {
        public static string value;
    }

在窗体Form1中,调用如下:

private void button1_Click(object sender, EventArgs e)
{
    app.value = "f2"; //Assign values to static members
    new Form2().Show(); //Show Form2
}

在表格2中:

public Form2()
    {
        InitializeComponent();
        this.Text = App.value; //Get back the value of app.value
        app.value = "Form2"; //Assign a value to app.value so that other forms can call
    }

相关问题