PDA

View Full Version : سوال: WindowsControlLiberary



morika
یک شنبه 23 فروردین 1388, 18:19 عصر
سلام
چه جوری میشه یک Windows Control Liberary رو با کد نویسی به برناه اضافه کرد
به این صورت که هروقت فرم لود شد بره این فایل رو هم تو خودش لود کنه
ممنون

__H2__
دوشنبه 24 فروردین 1388, 02:02 صبح
سلام
سوالتان کمی ایهام دارد.
- شما میتوانید با فرمان Project->Add Reference یک dll را در زمان طراحی برنامه به برنامه اضافه کنید.
بدین ترتیب به سادگی میتوانید در کدهای برنامه مثل روشهای عادی و معمول از کلاسها و اشیای آن dll استفاده کنید.
این روش استاندارد و معمول است.

- از طرفی دیگر اگر زمان طراحی برنامه این را نمیخواهید و مثل یک سیستم plugin یا add-on میخواهید بشود dll هایی بعداً به برنامه اضافه کرد و با دادن مسیر آنها را لود کرد، باید از متد System.Reflection.Assembly.LoadFile استفاده کنید.

morika
دوشنبه 24 فروردین 1388, 16:25 عصر
من کد شما رو نوشتم اما هیج عملی انجام نمیده
اگه میشه یه کم کامل تر بگین
System.Reflection.Assembly.LoadFile
ممنون

__H2__
سه شنبه 25 فروردین 1388, 12:30 عصر
سلام
من مطمئن نیستم که این همانچیزی باشد که شما میخواهید.
به روش اول گفته شده در پست 2 دقت بیشتری کنید.
(این روش عادی است و در نهایت میتوانید dll را کنار exe قرار داده و منتشر کنید و هیچ کد اضافه دیگیر نمیخواهد.)


اگه میشه یه کم کامل تر بگین
در این یکی روش فایل پویا بارگذاری میشود.
(فایل اسمبلی مورد نظر باید clr باشد و با یکی از زبانهای دات نتی ساخته شده باشد.)

طبیعی خواهد بود که بارگذاری و نمونه سازی کلاسها و اشیا هم پویا خواهد بود.
اگر فایل file.dll در ریشه C باشد و حاوی یک کنترلر به نام Namespace.ClassName باشد، شما میتوانید با کدی مثل این این کنترلر را لود و بارگذاری کند و مثلاً به فرم جاریتان اضافه کنید تا نمایش داده شود.


'Load assembly...
Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile("C:\file.dll")

'Find type...
Dim type As Type = asm.GetType("Namespace.ClassName", True, True)

'Create instance...
Dim obj As Object = System.Activator.CreateInstance(type)

'Direct cast...
Dim control As System.Windows.Forms.Control = CType(obj, System.Windows.Forms.Control)

'Use control...
control.Location = New System.Drawing.Point(10, 10)
control.Text = "Hello !"
'control. ... = ...
Me.Controls.Add(control)


(Me در صورتی مجاز است که در داخل خود فرم این کد را بنویسید (یا یک کنترلر وراثتی دیگر) وگرنه به جای Me باید متغییر کنترلر والد را قرار دهید.)

morika
سه شنبه 25 فروردین 1388, 19:46 عصر
اگه میشه این برنامه رو بنویس و فایل و فایل وی بی شو برای من بفرست
ممنون

__H2__
سه شنبه 25 فروردین 1388, 23:50 عصر
سلام

ه میشه این برنامه رو بنویس و فایل و فایل وی بی شو برای من بفرست
کدام برنامه؟؟؟
درهرصورت کد همان چند خط است که در پست قبلیم نوشتم.
متاسفم ولی فرصت خالی کافی برای ارسال برنامه (؟؟؟!!!) ندارم.
موفق و پیروز باشید.

morika
چهارشنبه 26 فروردین 1388, 02:31 صبح
dll من یه treeview هست ولی هرکار کردم با کد شما تو برنامه نمایش پیدا نکرد
حالا چیکار کنم؟

__H2__
چهارشنبه 26 فروردین 1388, 13:31 عصر
سلام

dll من یه treeview هست ولی هرکار کردم با کد شما تو برنامه نمایش پیدا نکرد
حالا چیکار کنم؟
اگر کار نکند، 5 دلیل منطقی دارد ...

1- باید dll شما با یکی از زبانهای دات نتی کامپایل شده باشد، C#.Net یا VB.Net یا VC++.Net و...

2- کنترلر شما باید ویندوزی باشد نه web !
کنترلرهای عادی ویندوزی وراثتی از System.Windows.Forms.Control هستند.
(راهایی دیگر برای استفاده کنترلرهای WPF و Web وجود دارد، که گمان میکنم کنترلر شما همچین مشکلی ندارد.)

3- کلاس اصلی کنترلر شما با کد فوق باید سازنده ای بدون پارامتر و عمومی داشته باشد.

4- شما باید نام و مسیر کامل کنترلر را درج کنید.
به احتمال زیاد مشکل شما همین جا است.
مثلاً اگر یک پروزه عادی WindowsControlLibrary را در vb آغاز کنید (که نتیجه آن یک dll خواهد بود) و کنترلری در آن بسازید به طور عادی مسیر و نام کامل آن چنین خواهد بود:
WindowsControlLibrary1.UserControl1
طبیعتاً اگر خودتان namespace اضافه کرده باشد، آن هم به نام افزوده میشود و یا اگر ...
WindowsControlLibrary1.Namespace1.Namespace2.Names pace3.UserControl1

که باید عبارت فوق را به جای عبارت Namespace.ClassName در کد پست 4 قرار دهید.
(میتوانید یکم NewProject بزنید و یک dll فقط برای آزمایش از نوع WindowsControlLibrary آغاز کنید و این dll را تست کنید.)

5- شاید مشکل شما ناشی از Dependance باشد، که در این صورت و صحت بخشهای دیگر، باید اولاً پیغام خطا را برایم ارسال کنید تا من ساده ترین راه حل منطقی اش را برایتان بیان کنم.

اگر مشکلتان حل نشد، dll تان را برایم ارسال کنید.

morika
چهارشنبه 26 فروردین 1388, 13:50 عصر
مشکل در قسمت namespase.classname هست که پیغام می ده همچین چیزی رو نمی تونه لود کنه

__H2__
یک شنبه 30 فروردین 1388, 01:27 صبح
سلام

مشکل در قسمت namespase.classname هست که پیغام می ده همچین چیزی رو نمی تونه لود کنه
طبیعتاً شما باید مسیر و نام را صحیح وارد کنید.
پیشنهاد میکنم dll تان را به یک پروژه Add Refrerence کنید و سپس کنترلر مورد نظر را از View->ObjectBrowse پیدا کنید و مسیر کاملبش را از کادر زیر ابزار فوق کپی کنید.

راه های دیگیرزی هم برای پیدا کردن وجود دارد....
یک راه هم این است که خود برنامه تمام کلاسهای موجود در dll را تک تک اسکن و جستجو کند تا کنترلر مورد نظر را پیدا کند.

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

sari-1369
یک شنبه 30 فروردین 1388, 23:56 عصر
چطور میشه یه WindowsControlLiberary از نوع textbox ساخت ؟؟ اون پروپرتی های یوز کنترل رو نداشته باشه و فقط پروپرتی های textbox رو داشته باشه .

__H2__
دوشنبه 31 فروردین 1388, 01:54 صبح
سلام

چطور میشه یه WindowsControlLiberary از نوع textbox ساخت ؟؟ اون پروپرتی های یوز کنترل رو نداشته باشه و فقط پروپرتی های textbox رو داشته باشه .

شما باید از TextBox وراثت بگیرید.



'VB.Net
Public Class Class1
Inherits System.Windows.Forms.TextBox

'...
End Class

//C#.Net
public class Class1
: System.Windows.Forms.TextBox
{
//...
}

developer_rahimi
دوشنبه 15 تیر 1388, 17:40 عصر
دوست من ممنونم از اطلاعات خوبت. من از روشي كه گفتي موفق شدم يه برنامه exe ديگه اي رو (واسه تست) از تو برنامم بخونم و اجراش كنم ولي چطوري از يه ماژول كه ممكنه چندين فرم داشته باشه dll بسازم ؟؟؟؟!!!!! مثلا يكي از ماژولائي كه درنظر دارم حقوق و دستمزده كه خودش يه پروژه بزرگه و بايد بعنوان يه ماژول جدا بتونه به برنامه موقع اجرا درصورتيكه خريدار از من تهيه كرده باشه اجرابشه. اين منطقي نيست كه واسش exe بفرستم بعد از روش بالا اونو اجراش كنم. ميشه از روي يه exe كه با vb.net 2005 ساخته شده (بعد از build كردن) يه dll ساخت و اونو واسه مشتري فرستاد؟؟؟!!!! لطف ميكني ه راهنمائي بكني خدا خيرت بده اينا چيزاي مهميه كه كسي بهش توجه نميكنه. من يه برنامه نوشتم كه داره فروش ميره و بايد پشتيبانيمو از حالت سنتي خارج كنم و ماژولاي جداگونه اي كه واسه مشتري ميفرستم برنامه بتونه اجرا كنه. يعني نميخوام واسش exe جديد بفرستم و از روش بهتري ميخوام استفاده كنم. اگه نظرتو راجع به برنامم بدي خيلي خوشحال ميشم http://www.gesmic.ir دفترچه راهنماشو ميتوني دانلود بگيري توضيحات كامل داره.
بازم ازت ممونم

sari-1369
دوشنبه 15 تیر 1388, 18:44 عصر
سلام

شما باید از TextBox وراثت بگیرید.



'VB.Net
Public Class Class1
Inherits System.Windows.Forms.TextBox

'...
End Class

//C#.Net
public class Class1
: System.Windows.Forms.TextBox
{
//...
}


ممنون از راهنماییتون ، ولی من به جایی نرسیدم ، میشه یه نمونه برنامه بزارین ؟

VB

__H2__
دوشنبه 15 تیر 1388, 22:53 عصر
سلام
باشد، چند روز فرصت دهید، تا وقت خالی مناسبی پیدا کنم یک سمپل که مشکل شما و این تاپیک (http://barnamenevis.org/forum/showthread.php?t=166603) را حل کند آپلود میکنم.

__H2__
چهارشنبه 17 تیر 1388, 13:51 عصر
سلام
یک نمونه کدی نوشتم که دو بخش تقریباً مجزا دارد ...
کد جاری یک exe دارد که با vb.net طراحی شده و سه افزونه یا plug-in یا add-on و... دارد که هر کدام با vb.net و c#.net و vc++.net طراحی شده اند و dll هستند!

برنامه exe وقت بالا آمدن پوشه Plugins در کنار exe را جستجو میکند و تمام dll هایی که یکی از قوانین Sample1 یا Sample2 را پیاده سازی کرده باشد پیدا کرده و لیست میکند.

(
بعد از باز کردن پروژه در داخل VS و کامپایل کلی، فایل کوچک و بزرگ در پوشه EXE ساخته میشود
ولی اگر قبل از هر باز کردنی در VS به پوشه مذکور بروید خواهید دید که بودن فقط فایل اصلی exe و dll ها در Plugins کافی است و شما هم میتوانید سایر فایلها را حذف کنید،
یکبار قبل از باز کردن در VS پوشه EXE را ببینید
)

همانطور که خواهید دید پلاگین ها میتوانند با هر زبان دات نتی طراحی شوند و فقط با کپی شدن در پوشه Plugins شناسایی میشوند و exe آنها را پیدا کرده و بار گذاری میکند

Sample1 بر اساس dll هایی است که یک کنترلر System.Windows.Forms.Control در خود داشته باشند
در نتیجه بدیهی است که پروژه های پلاگینهای Sample1 باید فایل System.Windows.Forms را reference کنند تا بتوانید از کلاس مذکور استفاده کنید.
(بیشتر مربوط به مبحث همین تاپیک فعلی و جاری)

Sample2 بر اساس dll هایی است که واسط IPlugin درون پروژه exe را در خود پیاده سازی کرده باشند.
در نتیجه بدیهی است که پروژه های پلاگینهای Sample2 باید فایل ExePlugin را reference کنند تا بتوانند از رابط مذکور استفاده کنند.
(بیشتر مربوط به مبحث این تاپیک (http://barnamenevis.org/forum/showthread.php?t=166603))

شما هم میتوانید به سادگی یک پروژه Dll با هر زبان دات نتی شروع کنید و یک usercontrol در ان قرار دهید و پس از کامپایل dll نهایی را به پوشه Plugins کپی کنید، خواهید دید که با اجرای exe ، برنامه ان را پیدا کرده و میشناسد و میتواند انرا نمایش دهد.

لینک دانلود ثابت:
http://support.h02.ir/fwlink/?LinkId=1005796407

موفق باشید.

developer_rahimi
چهارشنبه 17 تیر 1388, 16:35 عصر
خيلي عالي بود دوست من سپاسگذارم. كد نويسي خوبي داري ولي من هنوز مشكلم حل نشده. ببين يه ماژول كه ميخواي به يه برنامه كاربردي اضافه كني ممكنه از تعداد زيادي فرم تشكيل شده باشه و همينطور هركدوم از اين فرمها ممكنه از داخل كدهاي چندين فرم ديگه صدا زده بشن. اين خيلي مشكله. چرا؟ چون بايد يه يه پروژه user control شروع بكني بعد همه اون فرمها كه مورد نظرته بعلاوه تمام كدهاشو اون تو بنويسي بعد كامپايل كني تا يه dll درست بشه بعد اونو بفرستي واسه مشتري و برنامت اونو بخونه. درست فهميدم؟ اگه اينطور باشه با توجه به مشكلاتي كه توي باگ گيري و تريس class library ها هست ميدوني چقدر وقت گير و طاقت فرسا ميشه؟
راه حلي نداريم كه بتونيم از يه پروژه windows app يه dll بگيريم بدون اون مشكلات؟
درهر حال مطلبت فوق العاده بود به گفته آقا علي از حالا اميدوارم بتونم كارتو جبران كنم. ممنونم از اينكه وقت گذاشتي
يه نظر راجع به كار من بدي ممنونت ميشم لينكشو قبلا واست گذاشتم.
اينكه توي اين پروژم خيلي تكنيكال اين قسمتو انجام بدم واسم فوق العاده مهمه. چه كنم كه ديگه پير شدم شايدم بيرون اومدن از روشهاي سنتي واسه من كمي دير باشه

developer_rahimi
چهارشنبه 17 تیر 1388, 16:51 عصر
من يه كنترل ساختم توي برنامه شما و تو همون فولدر ريختم ولي يه خطا ميده

EXCEPTION HAS BEEN THROWN BY THE TARGET OF AN INVOCATION

adinochestva
چهارشنبه 17 تیر 1388, 17:20 عصر
خيلي راحت تايپ project رو به class library عوض كن
حتي اگر win app هم باشه مي توني ازش استفاده كني در يك win app ديگر

__H2__
پنج شنبه 18 تیر 1388, 02:54 صبح
سلام

خيلي عالي بود دوست من سپاسگذارم. كد نويسي ...
در تاپیک خودتان به تفصیل جواب دادم.


من يه كنترل ساختم توي برنامه شما و تو همون فولدر ريختم ولي يه خطا ميده
اگر میتوانید پروژه نمونه خودتان را آپلود کنید تا دلیلش را برایتان تشریح کنم و راه حلش را ارائه دهم.


خيلي راحت تايپ project رو به class library عوض كن
بله، راه حل بدی نیست و با Sub Main به راحتی قابل استفاده است.

morika
چهارشنبه 21 مرداد 1388, 17:06 عصر
خب حالا من یه dll رو add کردم ولی یه سوال:

من یه دکمه رو فرم اصلی دارم ( روی فرمی که dll رو اون لود می شه. پس هیچ ارتباطی میان دکمه و dll نداره )
حالا می خوام وقتی دکمه رو زدم تمام ند های treeview ای که با dll لود میشه باز شه
می شه اینکارو کرد یا نه؟

__H2__
چهارشنبه 21 مرداد 1388, 20:02 عصر
سلام
احتمالاً کاری که میخواهید به سادگی قابل انجام است ولی بیشتر توضیح دهید:

تمام ند های treeview ای که با dll لود میشه باز شه
یعنی treeview را برنامه exe اصلی باید باز کند؟ فقط اطلاعات داخلش از dll تامین شود؟

شما میتوانید به نمونه دوم دقت کنید و هر ورودی یا خروجی را که دوست دارید( هر چیزی بگیرد یا هر چیزی بدهد) به واسط IPlugin اضافه کنید و بعد هم در dll ها آن متد را هم پیاده سازی کنید.
در ساده ترین شکلش این واسط میتواند همچین متدی هم داشته باشد:


Sub FillTree(tv As System.Windows.Forms.TreeView)

خیلی ساده است. امتحان کنید.
موفق باشید.

morika
چهارشنبه 21 مرداد 1388, 20:30 عصر
ببینید الان که من می خوام رو یه دکمه کد بیویسم هنوز هیچ dll ای روی فرم قرار نداره و فرم خالی هست چون وقتی برنامه اجرا میشه تازه dll وارد برنامه می شه (یه treeview ) حالا من توی این دکمه چی بنویسم که وقتی dll اجرا شد و ساختار درختی در فرم قرار گرفت این دکمه Node های ساختار درختی رو باز کنه؟

__H2__
شنبه 24 مرداد 1388, 02:48 صبح
سلام
اگر treeview شما در برنامه اصلی exe وجود دارد و فقط میخواهید محتویات آن را dll ها پر کنند...
در ساده ترین شکل ممکن و در همان مثال دانلودی معرفی شده در پست 16 تغییرات زیر را بدهید:

- به واسط IPlugin در پروژه exe تابع زیر را اضافه کنید:


Sub FillTree(tv As System.Windows.Forms.TreeView)


- در پروژه exe متدی مثل lstIPlugins_DoubleClick بنویسید که به جای اجرای Run از dll متد FillTree را اجرا کند و treeview خودش را برای پر شدن توسط dll تحویلش دهد.

- کد مورد نیاز را به Sample2 یکی از dll ها اضافه کنید
(کدی مثل این برای پروژه VBSamplePlugin)


Public Sub FillTree(ByVal tv As System.Windows.Forms.TreeView) Implements ExePlugin.IPlugin.FillTree
tv.Nodes.Add("new node")
End Sub


تمام.
موفق باشید.

morika
شنبه 24 مرداد 1388, 11:40 صبح
بابا treeview من یه dll هست و لازم به پر شدن نداره خودش پر شده
اصلا این برنامه لطفا دانلودش کن تا ببینی منظور من چیه...!

__H2__
شنبه 24 مرداد 1388, 22:37 عصر
سلام
متاسفانه کنترلر شما در dll یک treeview نیست، بلکه یک usercontrol است که رویش یک treeview قرار گرفته !!!
این کار استانداری برای آنکه در exe هم بتوانید مستقیم به treeview دسترسی داشته باشید نیست، بهتر بود dll شما حاوی ورزاثتی از treeview میبود.

بهرحال فعلاً اگر کدهای خودتان را چنین اصلاح کنید مشکل حل میشود.


Private m_TreeView As System.Windows.Forms.TreeView

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(Application.St artupPath + "\WindowsControlLibrary2.dll")

Dim type As Type = asm.GetType("WindowsControlLibrary1.UserControl1", True, True)

Dim obj As Object = System.Activator.CreateInstance(type)

Dim usercontrol As System.Windows.Forms.Control = CType(obj, System.Windows.Forms.Control)

Me.Controls.Add(usercontrol)

Me.m_TreeView = CType(usercontrol.Controls(0), System.Windows.Forms.TreeView)
'Me.m_TreeView = CType(usercontrol.Controls("TreeView1"), System.Windows.Forms.TreeView)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.m_TreeView.ExpandAll()
End Sub

morika
شنبه 24 مرداد 1388, 23:41 عصر
میشه لطفا راجع به کار اصولی تری که گفتید یه کم توضیح بدید؟

__H2__
سه شنبه 27 مرداد 1388, 15:55 عصر
سلام
راه حل خوب آن است که شما مستقیماً از خود TreeView وراثت بگیرید، مثل این کد:


Public Class Class1
Inherits System.Windows.Forms.TreeView

Public Sub New()
Dim node As System.Windows.Forms.TreeNode

node = New System.Windows.Forms.TreeNode("Root1")
node.Nodes.Add(New System.Windows.Forms.TreeNode("Child11"))
node.Nodes.Add(New System.Windows.Forms.TreeNode("Child12"))
node.Nodes.Add(New System.Windows.Forms.TreeNode("Child13"))
Me.Nodes.Add(node)


node = New System.Windows.Forms.TreeNode("Root2")
node.Nodes.Add(New System.Windows.Forms.TreeNode("Child21"))
node.Nodes.Add(New System.Windows.Forms.TreeNode("Child22"))
node.Nodes.Add(New System.Windows.Forms.TreeNode("Child23"))
Me.Nodes.Add(node)

Me.Size = New System.Drawing.Size(200, 350)
End Sub

End Class


و سپس در exe هم میتوانید همچین کدی بنویسید:


Private m_TreeView As System.Windows.Forms.TreeView

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(Application.St artupPath + "\WindowsControlLibrary2.dll")

Dim type As Type = asm.GetType("WindowsControlLibrary1.Class1", True, True)

Dim obj As Object = System.Activator.CreateInstance(type)

Me.m_TreeView = CType(obj, System.Windows.Forms.TreeView)

Me.Controls.Add(Me.m_TreeView)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.m_TreeView.ExpandAll()
End Sub

akhavan_a
شنبه 22 آبان 1389, 11:36 صبح
سلام
یک نمونه کدی نوشتم که دو بخش تقریباً مجزا دارد ...
کد جاری یک exe دارد که با vb.net طراحی شده و سه افزونه یا plug-in یا add-on و... دارد که هر کدام با vb.net و C#‎.net و vC++‎.net طراحی شده اند و dll هستند!

برنامه exe وقت بالا آمدن پوشه Plugins در کنار exe را جستجو میکند و تمام dll هایی که یکی از قوانین Sample1 یا Sample2 را پیاده سازی کرده باشد پیدا کرده و لیست میکند.

(
بعد از باز کردن پروژه در داخل VS و کامپایل کلی، فایل کوچک و بزرگ در پوشه EXE ساخته میشود
ولی اگر قبل از هر باز کردنی در VS به پوشه مذکور بروید خواهید دید که بودن فقط فایل اصلی exe و dll ها در Plugins کافی است و شما هم میتوانید سایر فایلها را حذف کنید،
یکبار قبل از باز کردن در VS پوشه EXE را ببینید
)

همانطور که خواهید دید پلاگین ها میتوانند با هر زبان دات نتی طراحی شوند و فقط با کپی شدن در پوشه Plugins شناسایی میشوند و exe آنها را پیدا کرده و بار گذاری میکند

Sample1 بر اساس dll هایی است که یک کنترلر System.Windows.Forms.Control در خود داشته باشند
در نتیجه بدیهی است که پروژه های پلاگینهای Sample1 باید فایل System.Windows.Forms را reference کنند تا بتوانید از کلاس مذکور استفاده کنید.
(بیشتر مربوط به مبحث همین تاپیک فعلی و جاری)

Sample2 بر اساس dll هایی است که واسط IPlugin درون پروژه exe را در خود پیاده سازی کرده باشند.
در نتیجه بدیهی است که پروژه های پلاگینهای Sample2 باید فایل ExePlugin را reference کنند تا بتوانند از رابط مذکور استفاده کنند.
(بیشتر مربوط به مبحث این تاپیک (http://barnamenevis.org/forum/showthread.php?t=166603))

شما هم میتوانید به سادگی یک پروژه Dll با هر زبان دات نتی شروع کنید و یک usercontrol در ان قرار دهید و پس از کامپایل dll نهایی را به پوشه Plugins کپی کنید، خواهید دید که با اجرای exe ، برنامه ان را پیدا کرده و میشناسد و میتواند انرا نمایش دهد.

لینک دانلود ثابت:
http://support.h02.ir/fwlink/?LinkId=1005796407

موفق باشید.

امکانش هست همین برنامه رو نمونه C# اش رو هم بذارین ..... نمی دونین چقدر به من کمک کردین اگه اینکارو بکنین ...ممنونمممم

__H2__
یک شنبه 23 آبان 1389, 21:02 عصر
سلام

امکانش هست همین برنامه رو نمونه C#‎ اش رو هم بذارین
پلاگین های این نمونه که به سه زبان مختلف VB.Net و C#.Net و VC++.Net نوشته شده اند و exe ان هم VB.Net است.

حتماً منظورتان exe است؟!
کد ساده ای دارد، ضمن اینکه برای تبدیل کدهای VB.Net و C#.Net به هم (نه با دقت 100% ولی تا حد 90% کد را صحیح تبدیل میکند) میتوانید به سایتهایی مثل اینها مراجعه کنید:

برنامه تبدیل خودکار:
http://www.developerfusion.com/tools/convert/vb-to-csharp
http://converter.telerik.com

آموزش بسیار بسیار کوتاه تبدیل دستی:
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

==============

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

اگر همچنان مشکلی در تبدیل کدها داشتید بفرمائید، انشاا... وقت کنم شاید جمعه بتوانم کدم را به C#.Net هم بنویسم و به همان پک دانلودی قبلی اضافه کنم.
موفق باشید.

akhavan_a
دوشنبه 24 آبان 1389, 09:12 صبح
سلام

پلاگین های این نمونه که به سه زبان مختلف VB.Net و C#‎‎‎‎‎.Net و VC++‎‎‎‎‎.Net نوشته شده اند و exe ان هم VB.Net است.

حتماً منظورتان exe است؟!
کد ساده ای دارد، ضمن اینکه برای تبدیل کدهای VB.Net و C#‎‎‎‎‎.Net به هم (نه با دقت 100% ولی تا حد 90% کد را صحیح تبدیل میکند) میتوانید به سایتهایی مثل اینها مراجعه کنید:

برنامه تبدیل خودکار:
http://www.developerfusion.com/tools/convert/vb-to-csharp
http://converter.telerik.com

آموزش بسیار بسیار کوتاه تبدیل دستی:
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

==============

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

اگر همچنان مشکلی در تبدیل کدها داشتید بفرمائید، انشاا... وقت کنم شاید جمعه بتوانم کدم را به C#‎‎‎‎‎.Net هم بنویسم و به همان پک دانلودی قبلی اضافه کنم.
موفق باشید.

خیلی ممنونم یه جور دستی تونستم بنویسم :لبخندساده:با dll های خودمم تست کردم ok بود . الان یه مشکل دیگه دارم که به C#‎‎‎‎ یا VB بودنش ربط نداره اونم اینه که اگه ممکنه توی کدتون یکم در مورد کلاس evidence توضیح بدین . این خط از کد و اگه ممکنه توضیح بدین . ممنون می شم

System.Security.Policy.Evidence evidence =
System.Reflection.Assembly.GetExecutingAssembly(). Evidence;

__H2__
سه شنبه 25 آبان 1389, 23:54 عصر
سلام

... یه جور دستی تونستم بنویسم ...
این خیلی خوب است، اصولاً VB.Net و C#‎‎.Net آنقدرها متفاوت نیستند و برای یک برنامه نویس دات نت بهتر آن است که حداقل به یکی تسلط کامل داشته باشد و به دیگری را هم تا حد مناسبی مسلط باشد.
اینطوری فرد به راحتی میتواند از منابع آموزشی و سمپل های هر دو زبان در جهت پیشبرد دانش خود و حل مشکلاتش استفاده کند.


... اگه ممکنه توی کدتون یکم در مورد کلاس evidence توضیح بدین ...
این کلاس مجموعه ای از مکان ها و فایلها است.
بدیهی است که فایل dll که میخواهید بارگذاری شود، خودش یک سری وابستگی ها به سایر dll دارد و طبیعتاً برای بارگذاری آن باید وابستگی های Reference شده آن هم بارگذاری شود.
(((
مثلاً عموم برنامه یا dll های عادی ما روی mscorlib.dll و system.dll و system.drawing.dll و system.data.dll و system.windows.forms.dll و... وابستگی هایی دارند.
)))

کلاس evidence امنیت این جریان را کنترلر میکند که dll بارگذاری شده شما، حق استفاده از چه dll های دیگری دارد و در واقع چه محدوده ای میتوانند مانور دهد و اگر اینطور نبود بارگذاری نشود.
(هم به نوعی به محیط runtime در یافتن محل این dll های وابسته کمک میکند.)

=====

(البته این مورد در Framework4 تغییراتی داشته و تقریباً حذف شده)
موفق باشید.

nowar1352
جمعه 31 تیر 1390, 02:07 صبح
سلام

شما باید از TextBox وراثت بگیرید.



'VB.Net
Public Class Class1
Inherits System.Windows.Forms.TextBox

'...
End Class

//C#.Net
public class Class1
: System.Windows.Forms.TextBox
{
//...
}






استاد گرامي من ميام يه ويندوزكلاس لايبرري ميسازم يه تكست باكس و يه باتم بغل هم ميزارم تو صفحه بعدشم ميخوام اين كنترل تركيبي از يه تكست باكس ارث بري كنه ولي اين خط ارور ميده

Inherits System.Windows.Forms.TextBox
Add Refrence iهم كردم ولي بازم ارور داده چكار كنم خيلي ببخشيد كه وقت تو ميگرم لطفآ كمكم كنيد سپاس گذارم