PDA

View Full Version : سوال: خصوصی کردن یکی از کلاس های یک کامپوننت



morteza271
چهارشنبه 01 تیر 1390, 14:00 عصر
سلام دوستان.
من دارم یه کامپوننت میسازم که در این پروژه دو کلاس دارم.
یکی از این کلاس ها یک فرم هست که برای فرم چند سازنده مختلف نوشتم.
کلاس بعدی کلاسی هست که تعدادی تابع داره که هر کدوم یکی از سازنده های کلاس اولی رو اجرا میکنه و فرم رو نمایش میده!
حالا وقتی کامپوننت رو به رفرنس های یک پروژه دیگر اجرا میکنم بعد اسم کامپوننت که نقطه میزنم اسم هر دو کلاسم نمایش داده میشه.
چیکار باید بکنم تا کلاسی که فرم هستش رو نمایش نده ولی توی کلاس دیگه بهش دسترسی داشته باشم؟
امیدوارم تونسته باشم منظورمو برسونم.
با تشکر فراوان

Esmail Solhkhah
چهارشنبه 01 تیر 1390, 20:24 عصر
تو کلاسی که میگی فرمه
internal partial class Form1 : Form
یعنی public رو internal کن

morteza271
پنج شنبه 02 تیر 1390, 08:46 صبح
ممنونم دوست عزیز.
کلاسی که یه فرمه دیگه قابل شناشایی نیست ولی دیگه داخل کلاس دیگه هم نمیتونم به متغیرهای کلاس اولی دسترسی داشته باشم!
من میخوام از اونجا بتونم بهش دسترسی داشته باشم.
این خطا رو میده:

Error 1 Inconsistent accessibility: parameter type 'PersianMessage.PersianMessageBox.IconType' is less accessible than method 'PersianMessage.PesianMessage.Show(string, string, string, PersianMessage.PersianMessageBox.ButtonType, PersianMessage.PersianMessageBox.IconType)' E:\Visual Studio 2010\Projects\PersianMessage\PersianMessage\Pesian Message.cs 27 36 PersianMessage


این کد کلاس فرم هستش :

namespace PersianMessage
{
internal partial class PersianMessageBox : Form
{
internal enum ButtonType { Ok, YesNO };
internal enum IconType { Information, Warning, Question, Error };

public PersianMessageBox()
{
InitializeComponent();
}

public void Show(string Title, string Message)
{
btnYes.Visible = false;
btnNo.Visible = false;
btnOk.Visible = true;
this.Text = "";
this.lblTitle.Text = Title;
this.lblMessage.Text = Message;
}
}
}

و این هم کد کلاس دیگه که میخوام این فرم رو نمایش بده :

namespace PersianMessage
{
public class PesianMessage
{
public static DialogResult Show(string Caption, string Title, string Text, PersianMessage.PersianMessageBox.ButtonType ButtonType, PersianMessage.PersianMessageBox.IconType IconType)
{
PersianMessageBox PerMsgBox = new PersianMessageBox(Caption, Title, Text, ButtonType, IconType);
DialogResult drResult = PerMsgBox.ShowDialog();
return drResult;
}
}
}

ولی خطای بالا رو میده.
با تشکر

morteza271
پنج شنبه 02 تیر 1390, 23:51 عصر
دوستان کسی نیست کمکم کنه؟!!
خواهشا یکی بگه باید چیکار کنم؟
ممنون میشم راهنمایی ام کنید.

Esmail Solhkhah
شنبه 04 تیر 1390, 16:49 عصر
کد نمونه رو ببین