70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

ایجاد فرم جدید و کنترل های آن از طریق کد نویسی در c#

با سلام

من میخوام با استفاده از کد نویسی بتونم یک فرم جدید بساز و تعدادی کنترل بر روی اون قرار بدم. بدین صورت که در زان اجرای برنامه اگر کاربر بر روی button1 کلیک کرد فرم جدید به اسم Form1 و lable1 و textBox1 , Button2 ساخته بشه و بتونم برای آنها event قرار بدم ( مثلا Form1Load یا Button2Click )

نکته حائز اهمیت اینه که پس از بستن برنامه تمام این فرمها و کنترلها در برنامه ذخیره شده باشن و از بین نرن

لطفاً بنده رو راهنمایی کنید

با سپاس فراروان

پرسیده شده در 1395/10/05 توسط

8 پاسخ

0

با سلام

ممنون از لطفتون

میخوام وضعیتشون حفظ بشن

دقیقا شبیه وقتی از طریق add windowsForm فرم جدید میسازم و بعد پروژه را بیلد میکنم بشه

آیا امکانش هست؟

پاسخ در 1395/10/05 توسط
0

دوست عزیز ایجاد فرم جدید دقیقا از توی خود برنامه انجام میشه

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

بخاطر همین کاربر وقتی فرم را ایجاد میکنه باید برای دفعات بعدی که برنامه رو اجرا میکنه فرم وجود داشته باشه

ضمن اینکه بنده یکسری event ها را باید برای فرم هایی که کاربر میخواهد بسازد پیش بینی کنم.

اینجای کاره که منو با مشکل مواجه کرده

حالا من نممیدونم کدهایی که شما فرمودید این کارها رو انجام میده؟

پاسخ در 1395/10/05 توسط
0

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

پاسخ در 1395/10/05 توسط
0

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

پاسخ در 1395/10/05 توسط
1

سلام ITPRO عزیز، در مورد سوالی که دارید باید بگم که شما باید دو کار انجام بدید. اول ایجاد کنترل ها و بعد از اون Cache کردن فرم. برای ساخت فرم به صورت زیر می تونید این کار رو انجام بدید:

var form = new Form();
var button = new Button()
{
    Text = "اضافه",
    Location = new Point(20, 20)
};
button.Click += (obj, sender) =>
{
    MessageBox.Show("HI");
};
form.Controls.Add(button);
form.Show();

تو قدم بعدی باید فرم ایجاد شده رو Cache کنید. برای اینکار یه Dictionary تعریف کنید مثلاً به صورت زیر:

Dictionary<string,Form> forms = new Dictionary<string, Form>();

حالا موقع ایجاد فرم اول چک کنید ببینید فرم مورد نظرتون ایجاد شده یا نه، اگر ایجاد شده بود نمایش بدید و در غیر اینصورت ایجاد کنید و در Cache ذخیره کنید:

if (!forms.ContainsKey("AddForm"))
{
    var form = new Form();
    var button = new Button()
    {
        Text = "اضافه",
        Location = new Point(20, 20)
    };
    button.Click += (obj, sender) =>
    {
        MessageBox.Show("HI");
    };
    form.Controls.Add(button);
    forms.Add("AddForm", form);
}
forms["AddForm"].Show();
پاسخ در 1395/10/05 توسط
1

سلام مجدد، خیر، تو کدهای بالا از LINQ استفاده نشده، LINQ برای کوئری گرفتن از مجموعه هاست، فقط یه موضوع اینکه شما می خوایید وضعیت برنامه حفظ بشه یا فرم های ایجاد شده زمان اجرا Cache بشن؟

پاسخ در 1395/10/05 توسط
0

با سلام.

میخوام وقتی کاربر فرم جدید را ساخت و بر فرض button1 ایجاد شد به وسیله رویداد Button_Click بتونه یه سری کارها رو که خودم از قبل تعیین میکنم انجام بده

مثلا یکسری اطلاعات خاص رو توی دیتابیس وارد کنه

نکته کار همین رویدادهاست که نمیدونم چطور میتونم کدهاشو بنویسم

پاسخ در 1395/10/05 توسط
0

با تشکر از شما دوست عزیز

من عذر خواهی میکنم. شما با زبان linq کد ها رو نوشتید؟

بعضی از کدها واسم ناشناخته هستن

سوالم اینه اگر من کد cache را اجرا کنم بعد از بسته شدن برناممه و اجرای مجدد برنامه فرم جدید موجود هست؟

پاسخ در 1395/10/05 توسط

پاسخ شما