C#访问另一个窗体类中的函数

标签 c#

我用一个名为“mainWindow”的窗体启动我的程序,在这个窗体中我有一个按钮,它运行一个打开新窗体作为对象的函数。我的问题是我无法访问此对象上的控件或此对象上的函数,我不明白为什么

第一种形式:

public partial class mainWindow : Form
{
    public mainWindow()
    {
        InitializeComponent();
        this.drawDriverGrid();
    }

    public void drawDriverGrid() 
    {
        Form driverGridForm = new driverGridView();
        driverGridForm.GetSelected();
    }

这是第二种形式

public partial class driverGridView : Form 
{
    public driverGridView() 
    {
        InitializeComponent();
    }

    public int GetSelected() 
    {
        return 1;
    }
}

我无法运行 GetSelected 函数

最佳答案

必须通知编译器(哈哈)你打算使用 driverGridView 的一个方法。所以不是:

    Form driverGridForm = new driverGridView();
    driverGridForm.GetSelected();

通过在 driverGridForm 的声明中说“Form”,您是在说“我只希望将 Form 的方法与此变量一起使用”。

相反,您打算说“我希望对这个变量使用 driverGridView 的方法”,所以:

    driverGridView driverGridForm = new driverGridView();
    driverGridForm.GetSelected();

或者,更好的是:

    var driverGridForm = new driverGridView();
    driverGridForm.GetSelected();

这意味着“让编译器从 new 表达式中推断出我在这里指的是什么类型”。

另请注意,C# 命名约定是类名、命名空间名和方法名以大写字母开头,因此应该是

    var driverGridForm = new DriverGridView();
    driverGridForm.GetSelected();

应该是namespace Test等等。

关于C#访问另一个窗体类中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48290771/

相关文章:

c# - iPhone 无法识别下载的 JPEG 文件

c# - 我应该更喜欢购买商业框架还是创建我自己的具有相同功能的版本? (经典 "Create vs Buy")

c# - 如何在 Roslyn 中用 var 替换字符串变量?

c# - 您能否链接到使用 BackgroundWorker 而不将其作为组件放置在表单上的一个很好的示例?

c# - 尝试重新启动线程时发生 ThreadStateException

c# UTF8 GetString from bytes array 不等于 php chr 函数

c# - 如何将 LINQ 查询限制为给定营销事件的营销列表?

c# - ASP.NET MVC : reassign TempData

c# xna : real time 2d Generation. 包括 GPU?使用 hlsl 还是 bramaha?

接口(interface)成员的 C# 条件属性