我很难理解引用和通话。 如果表单已存在,如何在不重新创建表单的情况下从中调用方法? (使用new
运算符)。
即。 Menu_View Menu = Menu.SetMenuView();
目前我的范围有点像这样:
在菜单中:
public Menu_View()
{
// Initialises the Menu form.
// Runs the method in the controller to open the Login form.
InitializeComponent();
User_Controller UserController = new User_Controller();
UserController.Show_Login(this);
}
在控制器中:
public void Show_Login(Menu_View Main_Menu)
{
// Creates an object of the User_LoginView.
// Set the Parent Form of the Child window
// Display the new form.
User_LoginView LoginView = new User_LoginView();
LoginView.MdiParent = Main_Menu;
LoginView.Show();
}
在登录表格中:
public partial class User_LoginView : Form
{
// Opens the form.
// When the Login Button is clicked, runs checks and comparisons.
public User_LoginView()
{
InitializeComponent();
}
public void btnLogin_Click(object sender, EventArgs e)
{
User_Controller.Check_Login(this);
}
然后回到控制器:
public static void Compare_Login(User_LoginView LoginView)
{
// Compares the returned AccessLevel.
// if it is corect; closes the Login and runs the SetMenuView method,
// if it is incorrect; shows an error.
if (AccessModel.AccessLevel > 0)
{
Console.WriteLine("Access Level " + AccessModel.AccessLevel);
LoginView.Close();
Menu_View.accessLevelSet = AccessModel.AccessLevel;
}
else
{
ErrorCodes_Controller LoginError = new ErrorCodes_Controller();
LoginError.WrongLoginError();
}
// This line gives me an error.
Menu_View Menu = Menu.SetMenuView();
}
答案 0 :(得分:1)
为了做到这一点,您需要将创建的实例作为参数或字段传递给需要访问该值的方法和类型。例如,您可以在User_LoginView
类型Menu_View
中添加一个字段。
class User_LoginView : Form
{
public Menu_View Menu_View;
...
}
这可以在创建实例时设置
User_LoginView LoginView = new User_LoginView();
LoginView.Menu_View = Main_Menu;
然后在Compare_Login
// This line gives me an error.
LoginView.Menu_View.SetMenuView();