C# 从辅助程序c中的父级调用方法#

C# 从辅助程序c中的父级调用方法#,c#,forms,methods,callback,C#,Forms,Methods,Callback,我试图从另一个类调用一个方法,但在该方法中,从第一个类调用一个方法。。。我无法更好地解释,所以下面是我想用代码做的 MyClass.cs public static void validarCampos(object sender) { **some code here** } // here, a KeyDown function calls MyHelper.cs=>TextBoxKyeDown method private void tb_KeyDown(object sender

我试图从另一个类调用一个方法,但在该方法中,从第一个类调用一个方法。。。我无法更好地解释,所以下面是我想用代码做的

MyClass.cs

public static void validarCampos(object sender) {
**some code here**
}

// here, a KeyDown function calls MyHelper.cs=>TextBoxKyeDown method
private void tb_KeyDown(object sender, KeyEventArgs e)
{
    (sender as TextBox).TextBoxKeyDown(e, this);
}
public static void TextBoxKeyDown(this TextBox tb, KeyEventArgs e, Control container)
{
    switch (e.KeyCode)
    {
        case Keys.Enter:
        case Keys.Add:
            tb.ZeroFill(e);
            // I want to call MyClass.cs=>validarCampos(tb);
            // here, before it moves to next TB, because on
            // validarCampos(tb) I can tell if the next TB is
            // enabled or not, if I do not call it HERE
            // when I press ENTER or ADD, it wont move next TB
            // until I press it twice...
            e.SuppressKeyPress = true;
            container.SelectNextControl(tb, true, true, false, true);
            break;
        case Keys.Decimal:
            if ((tb.Tag as string) == "importe")
            {
                e.SuppressKeyPress = true;
                container.SelectNextControl(tb, true, true, false, true);
            }
            break;
        case Keys.Subtract:
            e.SuppressKeyPress = true;
            container.SelectNextControl(tb, false, true, false, true);
            break;
    }
}
MyHelper.cs

public static void validarCampos(object sender) {
**some code here**
}

// here, a KeyDown function calls MyHelper.cs=>TextBoxKyeDown method
private void tb_KeyDown(object sender, KeyEventArgs e)
{
    (sender as TextBox).TextBoxKeyDown(e, this);
}
public static void TextBoxKeyDown(this TextBox tb, KeyEventArgs e, Control container)
{
    switch (e.KeyCode)
    {
        case Keys.Enter:
        case Keys.Add:
            tb.ZeroFill(e);
            // I want to call MyClass.cs=>validarCampos(tb);
            // here, before it moves to next TB, because on
            // validarCampos(tb) I can tell if the next TB is
            // enabled or not, if I do not call it HERE
            // when I press ENTER or ADD, it wont move next TB
            // until I press it twice...
            e.SuppressKeyPress = true;
            container.SelectNextControl(tb, true, true, false, true);
            break;
        case Keys.Decimal:
            if ((tb.Tag as string) == "importe")
            {
                e.SuppressKeyPress = true;
                container.SelectNextControl(tb, true, true, false, true);
            }
            break;
        case Keys.Subtract:
            e.SuppressKeyPress = true;
            container.SelectNextControl(tb, false, true, false, true);
            break;
    }
}

真的很抱歉解释,如果你需要更多的线索告诉我。。。我不粘贴整个validarCampos代码,因为它大约有140行。。。它只需检查文本框的内容,并根据结果确定哪些文本框被启用或禁用…

这是一个公共静态方法,因此您可以像这样调用它:

MyClass.validarCampos(tb);

它是一个公共静态方法,因此您可以像这样调用它:

MyClass.validarCampos(tb);

如果helper方法因上下文而异,请查看。您可以将函数作为参数传递给TextBoxKeyDown。我希望函数看起来像:

void TextBoxKeyDown(this TextBox tb, KeyEventArgs e, Control container, 
                    Action<object> CallBack)
{
   CallBack(tb);
}

如果helper方法因上下文而异,请查看。您可以将函数作为参数传递给TextBoxKeyDown。我希望函数看起来像:

void TextBoxKeyDown(this TextBox tb, KeyEventArgs e, Control container, 
                    Action<object> CallBack)
{
   CallBack(tb);
}

你有什么问题?你有什么问题?在提问之前,我实际上看过代表们,但以前从未使用过,所以我认为我做得不对。。。因为我在编译器上有很多错误!这很简单,我不知道我是怎么做的,我想我是在试图解析
动作AsyncCallback
多糟糕。。非常感谢你们,它工作得很好。在这里提问之前,我实际上看过代表们,但以前从未使用过,所以我认为我做得不对。。。因为我在编译器上有很多错误!这很简单,我不知道我是怎么做的,我想我是在试图解析
动作AsyncCallback
多糟糕。。非常感谢,它工作得很好。是的,但是如果我只从一个类调用helper,那就行了,问题是它是helper,所以每个类都有自己的
validarCampos
方法,有自己的参数。。。唯一常见的是keydown helper。是的,但是如果我只从一个类调用helper,那就行了,问题是它是一个helper,所以每个类都有自己的
validarCampos
方法,有自己的参数。。。唯一常见的是keydown助手。