پیدا کردن آیتمی خاص از یک stack
سلام دوستان
یه stack دارم به صورت زیر:
var ctrlstack = new Stack();
ctrlstack = MRKGetControls(frm);
همونطور که متوجه شدید ، از این stack برای نگهداری کنترل های فرمم استفاده می کنم.
در ادامه برنامم ، لازم دارم تا کنترل های مورد نظرم از داخل این stack رو پیدا کنم. برای این کار از Foreach استفاده کردم.
foreach (Control ctr in ctrlstack)
{
if ((ctr.GetType().Name.Substring(0, 3) == "MRK") && (ctr.Name.ToLower() == pp.ElementAt(i).ObjectName.ToLower()))
....
{
مشکلی که دارم اینه که ، فرمی دارم که 198 تا کنترل توش هست و این کثرت کنترلهای این فرمم باعث میشه تا اون حلقه foreach حدود 20 ثانیه طول بکشه.
دوستان شما پیشنهادی دارید که من بتونم سریع تر کنترلهای مورد نظرم رو از داخل stack پیدا کنم .
یه چیزی مثل find یا search داره خود stack که من اسم کنترلم رو بدم و کنترل مورد نظرم رو دریافت کنم ؟
نقل قول: پیدا کردن آیتمی خاص از یک stack
شما چرا به اينصورت كار ميكنيد؟ چه نيازي به Stack داريد؟:متفکر:
براي جستجوي كنترلهاي يك فرم ميتونيد از كد زير و مواقعي كه نياز به Stack داريد از ctrlstack استفاده كنيد.
Control[] ctrls = this.Controls.Find(pp.ElementAt(i).ObjectName, true);
if (ctrls != null)
{
Control ctrl = ctrls[0];
....
}
نقل قول: پیدا کردن آیتمی خاص از یک stack