الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية استدعاء نموذج بمعرفة اسمه ولكن في مشروع اخر project 1 + 2

بدأه activeman في 1 نوفمبر 2008 · 15 رد · 1,308 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــة

لدي سؤال :

كيف يمكن استدعاء Form عن طريق اسمه "Form1" أو "Form2" ..... بشرط ان هذا النموذج موجود في بروجكت اخر Project2

بينما زر الحدث موجود في بروجكت اخر Project1

بعد البحث وجدت اوامر مثل Invoke + Type وهكذا الا انها لم تزبط معي .

حيث عندي جدول يه مسميات هذه النماذج واريد من خلال الكود أن أقدر على استدعائهم من خلال ضغطة زر بالاضافة الى انني اريد ان ابعث معهم باراميتر Constructor فيه رقم اليوم مثلا او اي متغير..

شاكر جدا

#2

ممكن تستخدم الصيغة التالية

Form frm = (Form)Activator.CreateInstance(Type.GetType("Project2.Form1"));frm.Show();

تم تعديل هذه المشاركة بواسطة ddata11 في 1 نوفمبر 2008 في 22:11

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#3

للاسف ظهرتلي هذه الرسالة

Value cannot be null.
Parameter name: type
#4

if you have a reference to the Project2 in your Project1 you can simply use it as if it is in Project1

and you will initialize the new object from it then tell it to show or showdialog as you wish

like the following

Project2.Form2 frm=new Project2.Form2();

frm.Show();

I hope that helps

لا علم لنا إلا ما علمتنا

و قل رب زدنى علما

و لئن شكرتم لأزيدنكم

#5

يا ايخ ارجو ان تقرأ السؤال بشكل صحيح

اريد الاستدعاء بالنص بالمسمى

#6

معنى الخطأ هنا انك اما ماكتبتش اسم الفورم بشكل سليم وكامل او انك مش عامل Reference للمشروع Project2

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#7

لا معمول كل شئ

ولكن الاستدعاء لا يزبط الا اذا كان الفورمان من المشروع نفسه

#8

كلامك سليم يا اخي ، لما يكون الفورم في مشروع ثاني يحدث الخطأ اللي انت ذكرته.

وممكن نحل المشكلة باستخدام AssemblyQualifiedName الخاص بالنوع المراد إنشاؤه وهو تركيبه من اسم النوع واسم الأسمبلي الذي يحتويه.

مبائياً ممكن تجرب الكود

 

Form frm [color= #339933;]= [color= #009900;](Form[color= #009900;])Activator.[color= #202020;]CreateInstance[color= #009900;](Type.[color= #202020;]GetType[color= #009900;]([color= #ff0000;]"Project2.Form2, Project2, Version=1.0.0
.0, Culture=neutral, PublicKeyToken=null"[color= #009900;])[color= #009900;]);

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#9

للاسف نفس المشكلة

#10

لازم تستخدم "اسم الفورم الكامل" مثلما هو في برنامجك ، وعلشان تحصل عليه ممكن اول حاجة تستخدم الكود هذا

 

System.[color= #202020;]Console.[color= #202020;]WriteLine[color= #009900;](typeof[color= #009900;](Project2.[color= #202020;]Form2[color= #009900;]).[color= #202020;]AssemblyQualifiedName[color= #009900;]);

حينطبع اسم الفورم في Output

بعدها انسخه واستخدم نفس الكود في الاول

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#11

والله يا اخي نفس المشكلة

للاسف لم تزبط ياحبذا لو تسوي الكود عندك وترفعه ،،

في شغلة أخرى الا وهي اريد ارسال constructor للفورم المستدعى

#12

عملت الكود,,,,,,,,,,,,,,,,,,

إن شاء الله يفيدك

Project1.rar

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#13

يا اخي البروجكت ليس فيه اي اكواد مجرد نموذج فارغ ولا شئ غير ذلك !!! ولا يوجد استدعاء ولا اي حرف برمجي

#14
activeman كتب:
يا اخي البروجكت ليس فيه اي اكواد مجرد نموذج فارغ ولا شئ غير ذلك !!! ولا يوجد استدعاء ولا اي حرف برمجي

يااخي افتح الملف Program.cs في المشروع Project1 واتبع الدالة Main

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#15

اخي اسف

بس هذا كود 2008 وليس 2005

انا اريدها 2005 لاعتمادي الكبير عليه واريد دالة ال Constructor لابعث من خلالها parameters

تم تعديل هذه المشاركة بواسطة activeman في 4 نوفمبر 2008 في 23:36

#16

للأسف ما فيش عندي فيجوال استديو 2005,,,,,,,,,,

وبالنسبة للـ Parameter Constructor ممكن تستخدم نفس الدالة الأولى ،،،،،،،،،

فلو افترضنا ان شكل Form2 كذا

 

 public partial class Form2 [color= #339933;]: Form

    [color= #009900;]{

        public Form2[color= #009900;]([color= #993333;]string prm1[color= #009900;])

        [color= #009900;]{

            InitializeComponent[color= #009900;]([color= #009900;]);

        [color= #009900;]}

    [color= #009900;]}

فإستدعاء الدالة يكون

 

Form frm [color= #339933;]= [color= #009900;](Form[color= #009900;])Activator.[color= #202020;]CreateInstance[color= #009900;](Type.[color= #202020;]GetType[color= #009900;]([color= #ff0000;]"Project2.Form2, Project2, Version=1.0.0
.0, Culture=neutral, PublicKeyToken=null"[color= #009900;]),

 [color= #ff0000;]"parm1"[color= #009900;]);

            frm.[color= #202020;]ShowDialog[color= #009900;]([color= #009900;]);

ارجو المعذرة,,,,,,,,,,,,,,,,,,,,

تم تعديل هذه المشاركة بواسطة ddata11 في 5 نوفمبر 2008 في 00:35

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…