گفتگو هایی در باب سی شارپ

the_king

مدیرکل انجمن
ممنون استاد علی
یعنی binding به درد همون دیتابیس میخوره دیگه

نه، اینکه منبع اطلاعات دیتابیس هست یا نیست اهمیتی تو این قضیه نداره، منبع اطلاعات معمولا حالت کلاس داره که هر فیلد اش در یکجا نمایش داده میشه، حالا این کلاس از دیتابیس میاد یا نمیاد مهم نیست. مهم اینه که فیلد هایی که در کنترل ها نمایش داده میشه مرتبط به یک شیء واحد هستند، از جاهای متفرقه نمیان. که معمولا هم همینطور هست. تنها عیب کار اونجا است که Binding کردن دست تون رو در سفارشی کردن نمایش ها یکم می بنده. برای فرم هایی که نمایش اطلاعات قدری پیچیده است از خیر Binding بگذرید بهتره.

یک شی notifyIcon1 ساختم و زمانی که ContextMenuStrip اش رو نشون میدم ، کار میکنه ولی نمیدونم کدوم رویداد از این شی هست که فقط وقتی روی منو اش (شی ContextMenuStrip در notifyIcon1) کلیک کنم ، اون رویداد اجرا شه (رویدادهاش رو که تست کردم ، همه شون وقتی که روی شی notifyIcon1 ، چه کلیک راست یا چپ کنم ، اجرا میشن) . من فقط میخوام وقتی روی متن منویی کلیک شد ، اون رویداد اجرا بشه
همچین رویدادی برای این شی هست؟
متوجه نمیشم. اگه منظورتون یک آیتم از منو ئه، که خود آیتم ها رخداد Click دارند، کاری به notifyIcon1 و ContextMenuStrip و رخداد هاشون ندارید. اگه هم منظورتون صرفا بعد از باز شدن و نمایش منو ئه، ContextMenuStrip رخداد Opening داره.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
نه، اینکه منبع اطلاعات دیتابیس هست یا نیست اهمیتی تو این قضیه نداره، منبع اطلاعات معمولا حالت کلاس داره که هر فیلد اش در یکجا نمایش داده میشه، حالا این کلاس از دیتابیس میاد یا نمیاد مهم نیست. مهم اینه که فیلد هایی که در کنترل ها نمایش داده میشه مرتبط به یک شیء واحد هستند، از جاهای متفرقه نمیان. که معمولا هم همینطور هست. تنها عیب کار اونجا است که Binding کردن دست تون رو در سفارشی کردن نمایش ها یکم می بنده. برای فرم هایی که نمایش اطلاعات قدری پیچیده است از خیر Binding بگذرید بهتره.


متوجه نمیشم. اگه منظورتون یک آیتم از منو ئه، که خود آیتم ها رخداد Click دارند، کاری به notifyIcon1 و ContextMenuStrip و رخداد هاشون ندارید. اگه هم منظورتون صرفا بعد از باز شدن و نمایش منو ئه، ContextMenuStrip رخداد Opening داره.

ممنون استاد علی
منظورم شی از کلاس NotifyIcon هست (همون شی ای که باعث ایجاد آیکون در system tray میشه . آیکون های کنار ساعت ویندوز)
روی آیکون اش (در system tray) ، کلیک راست که میکنم ، لیست منو اش میاد ولی در رویداد کلیک اش ، وقتی هر نوع کلیکی (چپ یا راست) میکنم ، رویدادش اجرا میشه (ولی من فقط میخوام مثل بقیه ی نرم افزارها ، وقتی روی منویی مثلا Exit یا About که انتخاب کردم فقط رویداد اجرا شه)
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
بعد اینکه ElementHost Class دقیقا برای چیه؟
انگار کنترلی هه که از امکانات wpf در winform میشه استفاده کرد ولی من چون wpf کار نکردم ، دقیقا متوجه نمیشم که چه حالت گرافیکی ای میتونه اضاه کنه یا چه قابلیت هایی میتونه اضافه کنه که winform نداره؟
مهم تر اینکه اصلا چجوری کار میکنه؟ در راهنمای ویژال استودیو ، کد مثال اش هست :

کد:
private void Form1_Load(object sender, EventArgs e)
{
    // Create the ElementHost control for hosting the
    // WPF UserControl.
    ElementHost host = new ElementHost();
    host.Dock = DockStyle.Fill;

    // Create the WPF UserControl.
    HostingWpfUserControlInWf.UserControl1 uc =
        new HostingWpfUserControlInWf.UserControl1();

    // Assign the WPF UserControl to the ElementHost control's
    // Child property.
    host.Child = uc;

    // Add the ElementHost control to the form's
    // collection of child controls.
    this.Controls.Add(host);
}

ولی این کلاس HostingWpfUserControlInWf.UserControl1
را اصلا واسه ی من نمیشناسه
کلا درباره اش توضیح میدین؟
 

the_king

مدیرکل انجمن
ممنون استاد علی
منظورم شی از کلاس NotifyIcon هست (همون شی ای که باعث ایجاد آیکون در system tray میشه . آیکون های کنار ساعت ویندوز)
روی آیکون اش (در system tray) ، کلیک راست که میکنم ، لیست منو اش میاد ولی در رویداد کلیک اش ، وقتی هر نوع کلیکی (چپ یا راست) میکنم ، رویدادش اجرا میشه (ولی من فقط میخوام مثل بقیه ی نرم افزارها ، وقتی روی منویی مثلا Exit یا About که انتخاب کردم فقط رویداد اجرا شه)
خود منم همون رو میگم. شما باید برای رخداد کلیک آیتم About و Exit کد بنویسید، چیکار به NotifyIcon دارید.

بعد اینکه ElementHost Class دقیقا برای چیه؟
انگار کنترلی هه که از امکانات wpf در winform میشه استفاده کرد ولی من چون wpf کار نکردم ، دقیقا متوجه نمیشم که چه حالت گرافیکی ای میتونه اضاه کنه یا چه قابلیت هایی میتونه اضافه کنه که winform نداره؟
مهم تر اینکه اصلا چجوری کار میکنه؟ در راهنمای ویژال استودیو ، کد مثال اش هست :

کد:
private void Form1_Load(object sender, EventArgs e)
{
    // Create the ElementHost control for hosting the
    // WPF UserControl.
    ElementHost host = new ElementHost();
    host.Dock = DockStyle.Fill;

    // Create the WPF UserControl.
    HostingWpfUserControlInWf.UserControl1 uc =
        new HostingWpfUserControlInWf.UserControl1();

    // Assign the WPF UserControl to the ElementHost control's
    // Child property.
    host.Child = uc;

    // Add the ElementHost control to the form's
    // collection of child controls.
    this.Controls.Add(host);
}

ولی این کلاس HostingWpfUserControlInWf.UserControl1
را اصلا واسه ی من نمیشناسه
کلا درباره اش توضیح میدین؟
برای آشنایی با WPF باید یک کتاب شو مطالعه کنید، سیستم گرافیکی اش متفاوت با فرم های ویندوز ئه، مثل Adobe Flash اجزاء حالت برداری داره، سیستم لایه ای اش فرق می کنه، موتور گرافیکی اش مستقل ئه، وابستگی اش به GDI ویندوز خیلی کم ئه. اون HostingWpfUserControlInWf.UserControl1 فقط یک مثاله. قرار نیست بشناسیدش. یه پروژه WPF ای ئه که داخلش یک UserControl ساخته شده. یک پروژه مستقل WPF دارید، با Add Project یا Add Reference اضافه اش کردید به Solution/Project تون و میخواهید یه کنترل Public اش رو در فرم پروژه تون استفاده کنید. اون ElementHost یک محیطی فراهم می کنه که بشه کنترل WPF ای رو نمایش داد.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
خود منم همون رو میگم. شما باید برای رخداد کلیک آیتم About و Exit کد بنویسید، چیکار به NotifyIcon دارید.


برای آشنایی با WPF باید یک کتاب شو مطالعه کنید، سیستم گرافیکی اش متفاوت با فرم های ویندوز ئه، مثل Adobe Flash اجزاء حالت برداری داره، سیستم لایه ای اش فرق می کنه، موتور گرافیکی اش مستقل ئه، وابستگی اش به GDI ویندوز خیلی کم ئه. اون HostingWpfUserControlInWf.UserControl1 فقط یک مثاله. قرار نیست بشناسیدش. یه پروژه WPF ای ئه که داخلش یک UserControl ساخته شده. یک پروژه مستقل WPF دارید، با Add Project یا Add Reference اضافه اش کردید به Solution/Project تون و میخواهید یه کنترل Public اش رو در فرم پروژه تون استفاده کنید. اون ElementHost یک محیطی فراهم می کنه که بشه کنترل WPF ای رو نمایش داد.

ممنون استاد علی
من باز قاتی کردم :green:
باید موقع مقداردهی پروپرتی ContextMenuStrip در شی notifyIcon ، رویداد مربوط به این شی پروپرتی ContextMenuStrip (رویداد کلیک اش) رو مقداردهی میکردم (مثل حالت های قبلی) (معلوم بود وقتی روی منو کلیک میشه ، باید رویدادهای منو ، مقداردهی بشن)
ولی من فکر کرده بودم که باید رویدادهای شی notifyIcon را باید مقداردهی کنم
------------------------
در مورد رویداد درگ و دروپ ، من یه کد رو متوجه نشدم
چرا باید در رویداد DragEnter ، کد e.Effect = DragDropEffects.Move; حتما باید نوشته شه تا کار کنه؟ هر چی فکر میکنم ، دلیلی برای این کار نمیبینم (خوب فعال کردن پروپرتی AllowDrop برای اون شی ، به نظر کافی میاد . پروپرتی e.Effect ، اصلا به اسمش هم نمیخوره که به یادمون چیزی رو بندازه)
درباره ی رشته ی DataFormats.FileDrop (ورودی متد GetData در رویداد DragDrop) ، هم در راهنماش ، مقدار لیترال را راهنمایی میکردن تا برنامه نویس بجای این متغییر ، مقدار لیترال را هم بتونه جایگزین کنه ، به نظرم کار رو راحت تر میکرد
 

the_king

مدیرکل انجمن
در مورد رویداد درگ و دروپ ، من یه کد رو متوجه نشدم
چرا باید در رویداد DragEnter ، کد e.Effect = DragDropEffects.Move; حتما باید نوشته شه تا کار کنه؟ هر چی فکر میکنم ، دلیلی برای این کار نمیبینم (خوب فعال کردن پروپرتی AllowDrop برای اون شی ، به نظر کافی میاد . پروپرتی e.Effect ، اصلا به اسمش هم نمیخوره که به یادمون چیزی رو بندازه)

الزاما Move نیست. AllowDrop مشخص می کنه که این کنترل میتونه مواردی رو بپذیره اما این به این معنی نیست که هر جور Data ای براش قابل استفاده باشه. محتویاتی که داره Drag میشه و منبع اش مهمه. برنامه نویس که از قبل نمیدونه کاربر از کجا و چه جور داده ای رو Drag می کنه. باید وقتی Drag در حال انجامه تصمیم بگیره که این داده بدرد اش میخوره یا نه و بر اساس اون تصمیم بگیره که چه واکنشی نشون بده.

درباره ی رشته ی DataFormats.FileDrop (ورودی متد GetData در رویداد DragDrop) ، هم در راهنماش ، مقدار لیترال را راهنمایی میکردن تا برنامه نویس بجای این متغییر ، مقدار لیترال را هم بتونه جایگزین کنه ، به نظرم کار رو راحت تر میکرد
قطعا همچین چیزی برای طراح های NET. هم راحت تر بوده ولی عملی نیست، چون فقط با یکسری موارد ثابت و محدود طرف نیستید. همانطور که شما Button.Text رو از بین یکسری موارد محدود انتخاب نمی کنید. علاوه بر یکسری موارد استاندارد، فرمت های غیر استانداردی هم ممکنه بکار بره که اسمشون از قبل مشخص نیست و ممکنه در هر سیستمی شامل نوع داده متفاوتی باشند. تنها راه شناسایی این فرمت ها فقط اسم و Handle شونه که دومی بدرد سازنده اون فرمت میخوره. میمونه اسم که طبعا اونطور که شما دوست دارید نمیشه فقط یکسری موارد ثابت از قبل تعیین شده باشه.
Clipboard Formats
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون استاد علی
ولی من بازم فلسفه ی این e.Effect را خوب درک نکردم
-------------------------------
پروپرتی Control.DoubleBuffered و Control.ImeMode برای چیه؟ کاربردش کجاست و اگه میشه یه مثال ساده بزنین (مثلا برای کنترل فرم)
پروپرتی MaximumSize برای این نیست که وقتی مشخص میشه ، دیگه کنترل مون بزرگتر از اون ابعاد دیگه نمیشه؟ اگه نه ، پس برای چیه؟ اگه آره ، پس چرا من از چیزی که معین میکنم ، بیشتر و کمتر از اون هم میتونم فرم را بزرگتر و کوچیکتر کنم
بعد اینکه من پروپرتی Form.HelpButton را فعال میکنم ، دکمه ی help یا همون دکمه ی علامت سئوال در caption bar اضافه نمیشه . مشکلش کجاست؟
 
آخرین ویرایش:

the_king

مدیرکل انجمن
ممنون استاد علی
ولی من بازم فلسفه ی این e.Effect را خوب درک نکردم

اینکه خیلی طبیعیه، چیزی که درست و حسابی باهاش کار نکرده باشید رو طبیعتا خوب نمی تونید درک کنید، همه همینطور اند. Drag کردن انواع مفاهیم داره، از جابجایی شیء و حذف و اضافه کردن آیتم گرفته تا دریافت فایل یا مسیر پوشه ورودی. اینها همه شون نه معنی یکسانی دارند که Effect شون یکسان باشه و نه فرمت داده شون مشابهه که بتوانید همه شون رو پشتیبانی کنید. کنترل مورد نظر شما در هر صورت نمیتونه روی هر فرمتی Drag انجام بده، وقتی فرمت ورودی بدرد کد تون نخوره نباید Drop اش رو قبول کنید، باید رد کنید، چون اگه قبول کنید هم نمی توانید از فرمتی که نمیشناسید استفاده کنید. فرمت ورودی و محتویاتش رو چک می کنید، با توجه به اینکه مورد قبول تون بود یا نبود Effect مناسب رو نشون میدید.

پروپرتی Control.DoubleBuffered و Control.ImeMode برای چیه؟ کاربردش کجاست و اگه میشه یه مثال ساده بزنین (مثلا برای کنترل فرم)

کجا ها رو در موردشون مطالعه کردید که به جواب نرسیدید؟ سایت مایکروسافت در موردش چیزی ننوشته بود؟
ImeMode تقریبا هیچوقت به دردتون نخواهد خورد چون برای زبان های چشم بادامی ها است، هر زمان خواستید یه ویرایشگر متنی برای چینی کره ای ها بنویسید اونوقت در موردش مطالعه کنید. نیست که تعداد حروف الفباشون خیلی زیاده و در صفحه کلید جا نمیشه، موقع نوشتن متن همچین امکاناتی برای تنظیم صفحه کلیدشون لازم میشه.
DoubleBuffered هم توضیحش مفصله اما کاربردش ساده است، برای جلوگیری از پر پر زدن محتوای کنترل ای که مدام رسم مجدد میشه از DoubleBuffered کمک می گیرند.

پروپرتی MaximumSize برای این نیست که وقتی مشخص میشه ، دیگه کنترل مون بزرگتر از اون ابعاد دیگه نمیشه؟ اگه نه ، پس برای چیه؟ اگه آره ، پس چرا من از چیزی که معین میکنم ، بیشتر و کمتر از اون هم میتونم فرم را بزرگتر و کوچیکتر کنم
برای همونه ولی به کوچکتر شدنش که کاری نداره چون اسمش Maximum ئه نه Minimum. اصولا نمی توانید از اون ابعاد بزرگترش کنید.
بعد اینکه من پروپرتی Form.HelpButton را فعال میکنم ، دکمه ی help یا همون دکمه ی علامت سئوال در caption bar اضافه نمیشه . مشکلش کجاست؟
مشکل که نه، تم ویندوز یکسری محدودیت هایی داره، وقتی نشون اش میده که MinimizeBox و MaximizeBox نشون داده نشه، False شون کنید تا دکمه Help قابل نمایش بشه. حالا دلیلش چیه، برای ساده تر کردن طراحی تم بوده یا به نظرشون ترکیب اونها غیر ضروری میومده رو نمیدونم.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
اینکه خیلی طبیعیه، چیزی که درست و حسابی باهاش کار نکرده باشید رو طبیعتا خوب نمی تونید درک کنید، همه همینطور اند. Drag کردن انواع مفاهیم داره، از جابجایی شیء و حذف و اضافه کردن آیتم گرفته تا دریافت فایل یا مسیر پوشه ورودی. اینها همه شون نه معنی یکسانی دارند که Effect شون یکسان باشه و نه فرمت داده شون مشابهه که بتوانید همه شون رو پشتیبانی کنید. کنترل مورد نظر شما در هر صورت نمیتونه روی هر فرمتی Drag انجام بده، وقتی فرمت ورودی بدرد کد تون نخوره نباید Drop اش رو قبول کنید، باید رد کنید، چون اگه قبول کنید هم نمی توانید از فرمتی که نمیشناسید استفاده کنید. فرمت ورودی و محتویاتش رو چک می کنید، با توجه به اینکه مورد قبول تون بود یا نبود Effect مناسب رو نشون میدید.

ممنون استاد علی
من هر مقداری رو برای e.Effect تغییر میدم ، فقط آیکون اش موقع درگ و دراپ تغییر میکنه ولی کدش همون چیزی میشه که نوشتم (که خوب مشخص هم هست)
یعنی در واقع ، مقدار e.Effect هر چیزی جز None باشه ، محتوای درگ و دراپ را میپذیره . خوب حالا میگم اگه قرار به پذیرفتن یا نپذیرفتن باشه ، پراپرتی Control.AllowDrop هم همین کار را انجام میده و دیگه نیازی به e.Effect نیست
برای چک کردن اینکه پسوند فایل یا کلا دایرکتوری و کلا محتوای درگ و دروپ چیه و برنامه نویس قبول کنه یا نه ، توی رویداد Drag&Drop و با متد e.Data.GetData مشخص میشه
یه مثال متفاوت میزنین تا کاربردش را درک کنم؟ یعنی با متفاوت شدن مقدار e.Effect ، فقط آیکون لینک اش فرق نکنه


برای همونه ولی به کوچکتر شدنش که کاری نداره چون اسمش Maximum ئه نه Minimum. اصولا نمی توانید از اون ابعاد بزرگترش کنید.

ولی من بزرگترش هم میکنم ، بازم بزرگتر میشه!
برای بقیه ی جواب ها هم ممنون
 

the_king

مدیرکل انجمن
ممنون استاد علی
من هر مقداری رو برای e.Effect تغییر میدم ، فقط آیکون اش موقع درگ و دراپ تغییر میکنه ولی کدش همون چیزی میشه که نوشتم (که خوب مشخص هم هست)
خوب توقع داشتید چه کار فوق العاده ای انجام بده؟ ForeColor رو هم عوض می کنید فقط رنگ نوشته ها عوض میشه و تاثیری روی کاری که کنترل انجام میده نمیذاره.

یعنی در واقع ، مقدار e.Effect هر چیزی جز None باشه ، محتوای درگ و دراپ را میپذیره . خوب حالا میگم اگه قرار به پذیرفتن یا نپذیرفتن باشه ، پراپرتی Control.AllowDrop هم همین کار را انجام میده و دیگه نیازی به e.Effect نیست
شما هر موردی که فکر می کنید نیازی بهش نیست ازش استفاده نکنید.
AllowDrop یعنی این کنترل میتونه رویش Drop صورت بگیره، نمیگه که برای چه محتوا و فرمتی و برای چه منظوری میتونه یا نمیتونه.
دکمه Enabled هم بهش نیازی نیست چون فقط رنگ دکمه رو تغییر میده واگه قراره دکمه کار نکنه می توانید داخلش متد return کنید که کاری انجام نده.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون استاد علی . حالا قضیه ی e.Effect بماند (هر چند من متوجه ی دلیل این پروپرتی نشدم)
بعد اینکه پروپرتی MaximumSize چرا برام کار نمیکنه؟ با ست کردن این پروپرتی ،اون کنترل ، قابلیت بزرگتر شدن از اون حد سایز را داره ! ولی پروپرتی MinimumSize درست کار میکنه
 

the_king

مدیرکل انجمن
ممنون استاد علی . حالا قضیه ی e.Effect بماند (هر چند من متوجه ی دلیل این پروپرتی نشدم)
بعد اینکه پروپرتی MaximumSize چرا برام کار نمیکنه؟ با ست کردن این پروپرتی ،اون کنترل ، قابلیت بزرگتر شدن از اون حد سایز را داره ! ولی پروپرتی MinimumSize درست کار میکنه
یجای کار تون ایراد داره؛ یه پروژه جدید با یه فرم خالی بسازید و امتحان کنید. نتیجه نگرفتید اون پروژه رو پیوست کنید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
ممنون استاد علی . بله درست شد
چجوری توی یک کانتینر اسکرول دار (مثلا فرم) ، اسکرول ها را میتونیم کنترل کنیم؟ مثلا فقط یکی از اسکرول ها را ، غیر فعال کنیم؟ (اما نمایش بده)
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
به عبارتی ، کد زیر چرا کار نمیکنه؟ :

کد:
this.HorizontalScroll.Enabled = false;
 

the_king

مدیرکل انجمن
سلام
ممنون استاد علی . بله درست شد
چجوری توی یک کانتینر اسکرول دار (مثلا فرم) ، اسکرول ها را میتونیم کنترل کنیم؟ مثلا فقط یکی از اسکرول ها را ، غیر فعال کنیم؟ (اما نمایش بده)
ممکنه یک جاهایی کاری انجام پذیر باشه و جاهای دیگه عملی نباشه چون بستگی داره به کدی که برای مدیریت رخداد های پنجره بکار میره.
GetScrollInfo
SetScrollInfo
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممکنه یک جاهایی کاری انجام پذیر باشه و جاهای دیگه عملی نباشه چون بستگی داره به کدی که برای مدیریت رخداد های پنجره بکار میره.
GetScrollInfo
SetScrollInfo

ممنون
منظورم استفاده از api ویندوز نبود
منظورم کد سی شارپ و احیانا با پروپرتی Form..HorizontalScroll بود
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
استاد علی ، نمیدونم من قاتی میکنم ، پروژه هام قاتی میکنن !
الان یه کد نوشتم که از توی یه فرم ، یه فرم دیگه را باز میکنه . برای باز کردنش هم از متد ShowDialog استفاده کردم . باز میشه ولی وقتی از توی فرم باز شده ، یه دکمه ای رو که رویداد کلیک داره ولی توش هیچ کدی نوشته نشده رو میزنم ، فرم اتوماتیک بسته میشه !! (چندین دکمه توی فرم باز شده ی جدید هست که بعضی از دکمه هاش همین جور وقتی کلیک میشه ، اتوماتیک فرم را میبنده!)
چرا؟!!
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلامی مجدد
مجبور شدم توی رویداد Closing فرم باز شده (جدید) ، کد زیر را برای جلوگیری از بستن اتوماتیک (بجز بستن توسط کاربر) بنویسم :


کد:
private void FormTest_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason != CloseReason.UserClosing)
                e.Cancel = true;
        }

ولی هنوز نفهمیدم چرا بدون اینکه هیچ خط کدی درباره ی بستن در هیچ کجا بنویسم (رویداد کلیک اون دکمه هم هیچ کدی نداره و هر رویداد دیگه ای هم کدی درباره ی بستن فرم نداره) ، چرا اتوماتیک بسته میشه؟!!!
ولی وقتی اون فرم جدید را با متد Show باز میکنم ، مشکلی نداره !!
 
آخرین ویرایش:

the_king

مدیرکل انجمن
سلام
استاد علی ، نمیدونم من قاتی میکنم ، پروژه هام قاتی میکنن !
الان یه کد نوشتم که از توی یه فرم ، یه فرم دیگه را باز میکنه . برای باز کردنش هم از متد ShowDialog استفاده کردم . باز میشه ولی وقتی از توی فرم باز شده ، یه دکمه ای رو که رویداد کلیک داره ولی توش هیچ کدی نوشته نشده رو میزنم ، فرم اتوماتیک بسته میشه !! (چندین دکمه توی فرم باز شده ی جدید هست که بعضی از دکمه هاش همین جور وقتی کلیک میشه ، اتوماتیک فرم را میبنده!)
چرا؟!!
همیشه یک درصد احتمال برای باگ سازنده در نظر بگیرید و بقیه رو احتمال اشتباه خودتون.
پروپرتی DialogResult اون دکمه رو ببینید مقداری نداشته باشه. برای ساده تر کردن طراحی ویزاردی این قابلیت رو دارن که اگه فرم با ShowDialog باز بشه و دکمه DialogResult داشته باشه همونو در پروپرتی DialogResult فرم ئه بنویسه و فرم بسته بشه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
همیشه یک درصد احتمال برای باگ سازنده در نظر بگیرید و بقیه رو احتمال اشتباه خودتون.
پروپرتی DialogResult اون دکمه رو ببینید مقداری نداشته باشه. برای ساده تر کردن طراحی ویزاردی این قابلیت رو دارن که اگه فرم با ShowDialog باز بشه و دکمه DialogResult داشته باشه همونو در پروپرتی DialogResult فرم ئه بنویسه و فرم بسته بشه.

ممنون استاد علی
مقدار پروپرتی DialogResult بعد از بسته شدن ، Cancel هه
انگار بازم برای همون پروژه هه . توی یه پروژه ی دیگه که میرم ، خوب کار میکنه .
میتونه بخاطر همون قضیه ای که توی Form و UserControl ، کلاس دیگه ای تعریف کردم ، باشه ؟
 

جدیدترین ارسال ها

بالا