PDA

View Full Version : مبتدی: استفاده از ienumerable به عنوان ورودی متد



arashhd
جمعه 02 مرداد 1394, 22:44 عصر
درود بر دوستان گرامی
من یک متد دارم که محاسباتی روی مقادیر کمبوباکس های فرم ویندوزی انجام می دهد.با توجه به تکراری بودن عملیات از یک متد استفاده کردم که نام کمبوباکس و نوع عملیات (رشته ای) را دریافت و با استفاده از Switch-Case روی رشته ورودی محاسبات را انجام می دهم.برای جلوگیری از ارسال اشتباه رشته به متد می خواهم عناوین عملیات را در یک ienumerable نگهداری و در هنگام فراخوانی متد از لیست ذکر شده برای نوع عملیات استفاده کنم.
لطفا راهنمایی بفرمائید
سپاس فراوان

Hamid2547
جمعه 02 مرداد 1394, 23:06 عصر
سوال واضح نیست، خوب این کارها رو می خواهید انجام بدید مشکل چیه؟ علاوه بر این کدی که تا الان نوشتید هم قرار بدید تا دوستان بتونن بهتر نظر بدن.

arashhd
جمعه 02 مرداد 1394, 23:30 عصر
با تشکر از شما
مثال کد من به شکل زیر هست.حالا به جای عدد 1 و 2 و 3 می خواهم لیستی از عملیات داشته باشم(رشته ای)،در زمان فراخوانی متد به عنوان مثال با تایپ ActionType و با زدن نقطه لیست اسامی رشته ای عملیات نمایش داده شود و در متد هم از همین رشته ها استفاده کنم نه از اعداد نامفهوم
سپاس دوباره

public void CboPackageControl(ComboBox CboName, TextBox TxtName, Label LblErrorName, string CboPackageAct, bool CboTypeIsInt, bool CboTypeIsByte) //1:cboSelected_Change * 2:TxtTextChange * 3:TxtLeave
{
switch (CboPackageAct)
{
case 1:
{
try
{
TxtName.Text = CboName.SelectedValue.ToString();
LblErrorName.Text = "";
TxtName.BackColor = ColorTranslator.FromHtml("#f1f1f1");
}
catch { }
break;
}


case 2:
{
if (TxtName.Text.Trim() == "")
{
CboName.SelectedIndex = -1;
}
else
{
try
{
CboName.SelectedValue = CboTypeIsInt ? int.Parse(TxtName.Text) : CboTypeIsByte ? Convert.ToByte(TxtName.Text) : CboName.SelectedIndex = -1;
}
catch { }
}
break;
}
case 3:
{
if (CboName.SelectedIndex == -1 && TxtName.Text.Trim() != "")
{
LblErrorName.Text = "اطلاعات با شناسه مورد نظر یافت نشد";
TxtName.BackColor = ColorTranslator.FromHtml("#fbfba0");
}
else
{
LblErrorName.Text = "";
TxtName.BackColor = ColorTranslator.FromHtml("#f1f1f1");
}
break;
}
}
}

Mahmoud.Afrad
شنبه 03 مرداد 1394, 06:21 صبح
باید یک enum با مقادیر مناسب تعریف کنی و یک پارامتر از نوع همین enum به متد بفرستی و در case ها حالت های مختلف رو بررسی کنی:

public enum ActionType
{
Action1 , Action2
}

public void CboPackageControl(ComboBox CboName, TextBox TxtName, Label LblErrorName, ActionType CboPackageAct, bool CboTypeIsInt, bool CboTypeIsByte)
{
switch (CboPackageAct)
{
case ActionType.Action1:
{
// ...
break;
}
case ActionType.Action2:
{
// ...
break;
}
}
}