PDA

View Full Version : سوال: دسترسی به آرایه ای از button ها



ravaei
جمعه 03 بهمن 1393, 10:46 صبح
درود ، یه آرایی از Button ها ایجاد کردم تو یه کلاس و تو فرم خیلی راحت می تونم بهش دسترسی پیدا کنم و خصوصیاتشو تغییر بدم ولی همین کارو تو یه کلاس دیگه انجام میدم (منظورم تغییر تو property های یکی از button ها) و ازش تو رویداد click که خودم توی کلاس form ساختم استفاده میکنم بعد run گرفتن break میشه و میگه دسترسی نداره !!! جالب اینجاست همون کد رو که با استفاده از کلاس تو فرم فراخونی میکنم و استفاده می کنم مشکل ایجاد میشه ولی خودشو تو form تو تابع btn_click که ایجاد کردم میزارم کار میکنه .

این همون کدست که وقتی توی تابع از یه کلاس دیگه مینویسم و اون تابع رو تو فرم تو رویداد کلیک فراخونی میکنم break میشه .


b[2, 2].BackColor = Color.Yellow;

ali.b.y
جمعه 03 بهمن 1393, 18:34 عصر
سلام.
بهتره متن خطایی که نشون داده میشه را بزاری تا بهتر کمک بشی یا یه عکس از پیام خطا بزار.
----------------------
من درست متوجه نشدم! اولا چرا آرایه ی دو بعدی تعریف کردی !؟ برای دکمه منطقی نیست - شما اینطور که من فهمیدم الان 3 تا کلاس داری. یکی کلاس مربوط به Button ها یا هموم کلاسی که متغییر آرایه ای توش قرار داره ,یه کلاس هم دارس که کلاس فرم برنامه هست که کد های برنامه از جمله رویداد مربوط به کلیک دکمه توشه و یه کلاس سومی هم داری که دوست داری یک سری متد تعریف کنی توش و از طریق کلاس فرم به اون متد ها دسترسی داشته باشی درسته؟

اگه اینطور باشه تا اونجایی که من می دونم با کدی که نوشتی نباید حتی تو کلاس فرم هم به آرایه دسترسی داشته باشی! چون یا باید از کلاس اولی که آرایه توش تعریف کردی یک نمونه بسازی (همون تعریف شی) یا حد اقل قبل از نام آرایه نام کلاس را بنویسی اینطوری
Buttonclass.b[x,x].BackColor=Color.yellow
که البته آرایه باید به صورت Public static باشه.

نکته دوم اینکه منظورت از رویداد کلیک دقیقا چیه؟ آیا روی فرم یک دکمه قرار دادی و توی رویداد کلیک اون کد بالا را نوشتی یا نه منظورت رویداد خود دکمه ها (آرایه) هست؟
اگه توجه کرده باشی وقتی یک دکمه ای روی فرم قرار می دهیم به طور خودکار رویداد کلیک براش تعریف میشه اینطوری
this.btn_1.Click += new System.EventHandler(this.btn_1_Click)

آیا تو هم برای دکمه هات تعریف کردی؟ چیزی شبیه زیر میشه
b[x,x].Click += ClickButton

که ClickButton نام یک متد که باید اینطور تعریف کنی
public void ClickButton(Object sender, EventArgs e)

کلا کد هاتو اگه بزاری بهتره