如何调用自定义datagridview控件的方法?

时间:2015-02-03 09:26:02

标签: c# datagridview

我有一个自定义控件,我也用它作为DataGridView控件。此自定义控件有一个名为SetHttpClient的方法,我将HttpClient对象作为参数传递。

如何从父表单调用此方法? (父表单只知道从DataGridViewTextBoxCell派生的类的实例)

3 个答案:

答案 0 :(得分:0)

你应该为此建立一个很好的结构。例如,如果您有两个表单,并且在表单1中,您有要从表单2刷新的网格。如果要打开表单2,则应从创建实例时传递网格实例。

或者第二种方式,表单2提供将在表单1中订阅的事件。如果应该刷新网格,则调用该事件。您可以将HttpClient传递给Args-Object到Form 1。

请告诉我,如果我误解了你。

答案 1 :(得分:0)

在我看来,您应该使用ViewModels与View进行通信,而不是在第二个View上与一个View执行操作进行通信。

所以,例如你的视图

CustomersView 在DataContext中包含 CustomersViewModel ,如果您执行操作 GetData ,则在 CustomersViewModel 中执行操作结果放到 DataGridView

此解决方案将负责提供从 DataGridView 类到 CustomersViewModel 的数据。 ViewModel可以使用某些服务或其他机制使用 HttpClient 为您提供数据。

我知道这不是你问题的直接答案,但对你的问题是很好的解决方案。

在这个例子中https://msdn.microsoft.com/en-us/library/ff798384.aspx你有方法 GetParts ,你可以想象这个方法的主体包含HttpClient并从网站获取数据。

答案 2 :(得分:0)

您可能正在谈论私有,公共,内部等访问修饰符。

如果是这样,那么在子窗体中创建访问修饰符,如public或internal。 在父母的形式,只需拨打电话。

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

    internal String HellowWorld_mt(string SuffixValue)
    {
        return "hello world and "+ SuffixValue;
    }
}


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

    private void button1_Click(object sender, EventArgs e)
    {
        ChildForm cf = new ChildForm();
        cf.Show();
        string resp = cf.HellowWorld_mt(" extra!");
        this.Text = resp;
    }
}

More about that: Access Modifiers (C# Reference)