0

別のクラスからメソッドを呼び出そうとしていますが、そのメソッド内で、最初のクラスからメソッドを呼び出します...これ以上うまく説明できないので、コードでやりたいことは次のとおりです...

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);
}

MyHelper.cs

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行なので貼り付けません... TextBoxesの内容を確認し、状況に応じて有効または無効になっているものを判断するだけです結果...

4

2 に答える 2

3

これは public static メソッドなので、次のように呼び出すことができます。

MyClass.validarCampos(tb);
于 2013-05-09T13:52:27.810 に答える
1

コンテキストによってヘルパー メソッドが異なる場合は、Action delagatesを参照してください。関数をパラメーターとして TextBoxKeyDown に渡すことができます。関数は次のようになると思います。

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

そして、次のように呼び出すことができます:

(sender as TextBox).TextBoxKeyDown(e, this, validarCampos);
于 2013-05-09T13:56:52.163 に答える