PDA

View Full Version : پیدا کردن آیتمی خاص از یک stack



dokhmal
چهارشنبه 27 بهمن 1389, 15:22 عصر
سلام دوستان
یه 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 که من اسم کنترلم رو بدم و کنترل مورد نظرم رو دریافت کنم ؟

Reza_Yarahmadi
چهارشنبه 27 بهمن 1389, 16:41 عصر
شما چرا به اينصورت كار ميكنيد؟ چه نيازي به Stack داريد؟:متفکر:
براي جستجوي كنترلهاي يك فرم ميتونيد از كد زير و مواقعي كه نياز به Stack داريد از ctrlstack استفاده كنيد.

Control[] ctrls = this.Controls.Find(pp.ElementAt(i).ObjectName, true);
if (ctrls != null)
{
Control ctrl = ctrls[0];
....
}

dokhmal
پنج شنبه 28 بهمن 1389, 08:19 صبح
ممنون از راهنماییتون