내가 그들에게 특정 태그 값을 제공하여 폼에 필요한 모든 값은 항목이 있는지 확인하려고 : 사용자가 저장 버튼을 매쉬 때 다음참조되는 모든 컨트롤이 있어야하고 Text 속성이 있어야 NRE를 가져 오는 이유는 무엇입니까?
//HHSConsts.cs
public static int REQUIRED_FIELD = 1;
// FrmDelivery
public FrmDelivery(NewDelivery newDel)
{
InitializeComponent();
. . .
SetRequiredControls();
}
private void SetRequiredControls()
{
// Required controls will have a Tag value of "1"
textBoxCost.Tag = HHSConsts.REQUIRED_FIELD;
. . .
이의 전성 검사가 수행됩니다
private void buttonSave_Click(object sender, EventArgs args)
{
if (RequiredDataMissing())
{
. . .
private bool RequiredDataMissing()
{
return this.Controls.Cast<Control>().Any(ctrl => (ctrl.Tag.Equals(HHSConsts.REQUIRED_FIELD)) && (ctrl.Text.Equals(String.Empty)));
}
내 표시에 따르면 "모든 컨트롤에 태그가 1 (필수)이지만 아직 비어 있으면 false를 반환합니다."라고 표시됩니다. 하지만 (bool val을 beningly 반환) 그것을하는 대신, 그것은 NRE와 충돌합니다. 구체적 :
// 애플리케이션 전반 예외 핸들러 : System.NullReferenceException : NullReferenceException이 HHS.FrmDelivery.b__0 (컨트롤 CTRL)에 System.Linq.Enumerable.Any [TSource (IEnumerable을 1 source, Func
2에서 술어) at HHS.FrmDelivery.RequiredDataMissing() at HHS.FrmDelivery.buttonSave_Click (개체 보낸 사람, EventArgs args) . . .
왜 이렇게 될까요? 원하는대로 작동하도록 내 멋진 바지 RequiredDataMissing() 코드를 우아하게 처리해야합니까?