English 中文(简体)
• 要求使用或没有超载方法
原标题:Wrong Function being called or No Overload for Method

我的职能是,在名录用户浏览之后,验证一些文本箱的内容。

private void CheckValidation(object sender, EventArgs e)
{
    bool OK = true;
    if (PhotograherNumber.Text == string.Empty || errorProvider1.GetError(PhotograherNumber)!="")
    {
        OK = false;
    }
    if (EventNumber.Text == string.Empty || errorProvider1.GetError(EventNumber)!="")
    {
        OK = false;
    }
    if (OK)
    {
        EnableProcessNow();
    }
    else
    {
        DisableProcessNow();
    }

}

这发挥了巨大作用。

但是,我补充说,案文箱上的<编码>Validated活动将要求履行的职能。

一俟我提出:

private void CheckValidation()
{

}

<代码>Validated也无问题。 活动。 然而,在我方案的另一部分,我称之为<条码>(CheckValidation)()。 但是,当我这样做的时候,它却不说正确的。

显然,如果我删除空洞的话。

private void CheckValidation()
{

}

然后,我发现,在方法检查中,没有超负荷使用0阿瓜。

因此,我如何把正确的<代码>CheckValidation从我的代码中说出来,但仍然确保我能够从这些事件中说出来?

最佳回答

根据我对你问题的理解,你是否希望采用同样的方法,但是,这两种方法都能够在没有参数的情况下人工使用,并且能够成为活动手?

如果你想从你的法典中讲手法的话,你只能打电话。 核对表(null, 活动Args.Empty);——然而,更好的解决办法是将守则列入(无参数)超载,并要求手人:

private void CheckValidation(object sender, EventArgs e)
{
    CheckValidation();
}

private void CheckValidation()
{
    // Code here
}
问题回答

请打电话<>。 核对表()在无参数的情况下运行超载。 如果你打电话<条码>CheckValidation(null, 活动Args.Empty);,它将用物体、活动Args参数操作超载。

你们的对外呼吁是通过正确数量的参数来完成这项工作。

个人而言,如果我称之为“我通过<条码>所使用方法”作为发件人,但取决于你使用的模式和你的物体安全(有些物体无法安全通过)。

objectReference.CheckValidation(this, EventArgs.Empty);

还指出,如果你在外部称呼该方法,就必须公开,并且必须从该类别中删除(除非该方法是静态的,而且必须从该类型名称上调)。

如果你不使用检疫方法作为一些活动手,那么仅仅从这一功能中删除参数。 您将可称之为<条码>。 如果这一方法被用作一些活动手,那么也从检查单解方法中删除参数(你不使用这些参数的任何途径),并且只是在该活动中叫作:

private void SomeEventHandler(object sender, EventArgs e)
{
    CheckValidation();
}

2. 还考虑从你的手法中删除大旗:

private void CheckValidation()
{
    if (PhotograherNumber.Text == "" || errorProvider1.GetError(PhotograherNumber)!= "")
    {
        DisableProcessNow();
        return;
    }

    if (EventNumber.Text == "" || errorProvider1.GetError(EventNumber)!= "")
    {
         DisableProcessNow();
         return;
    }

    EnableProcessNow();
}

此外,我还制定了描述你实际检查的方法:

private void CheckValidation()
{
    if (!IsAllInputValid())
    {
        DisableProcessNow();
        return;
    }

    EnableProcessNow();
}

private bool IsAllInputValid()
{
    if (!HasValidInput(PhotograherNumber))
        return false;

    if (!HasValidInput(EventNumber))
        return false;

    return true;
}

private bool HasValidInput(TextBox textBox)
{
    if (String.IsNullOrEmpty(textBox.Text)
        return false;

    return errorProvider1.GetError(textBox) != "";
}




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签