PDA

View Full Version : کمک: معادل این دستور از VB به #C چیست؟



newgoldenman
دوشنبه 15 بهمن 1386, 23:27 عصر
سلام دوستان
چند روزه دارم توی نت دنبال جواب این سوالم میگردم، اما به نتیجه نرسیدم.

این دستور در VB.Net :

Me.Invoke(d, New Object() {})معادلش توی C#.Net میشه این:

this.Invoke(d, new object[])خوب؟!

اما توی #C اصلاً این دستور شناخته نمیشه:ناراحت:
حتی از فضای نام :

using Microsoft.VisualBasic;هم استفاده کردم، ولی اصلاً به هیچ نتیجه ای نمیرسم و نمیتونه این دستور رو بشناسه. یعنی این که توی #C اصلاً Collection نداریم( Collections داریم!)

این هم اخطاری که میده برای این مشکل:

The type or namespace name 'Collection' could not be found (are you missing a using directive or an assembly reference?)
از دوستانی که در این زمینه اطلاعی دارند، خواهشنمدم تا در حل این مشکل مرا یاری کنند.

پیشاپیش خیلی خیلی ممنونم:لبخندساده:

siaa_98
سه شنبه 16 بهمن 1386, 01:56 صبح
نگفتی از collection چه استفاده ای میخوای بکنی؟
بسته به کارت میتونی از کلاسهای داخل فضای نام System.Collections
از قبیل ArrayList , StoredList, Stack, Queue, ... استفاده کنی
و همچنین میتونی از کلاس CollectionBase کلاسی رو به ارث ببری و توابع داخل اون کلاس رو که بصورت abstract هستش بازنویسی کنی.

hassan razavi
سه شنبه 16 بهمن 1386, 07:29 صبح
d از جنس چی هست ؟
می تونی از سایت زیر برای تبدیل کدهای VB به C sharp استفاده کنید.
http://labs.developerfusion.co.uk/convert/vb-to-csharp.aspx

Masoud_TB
سه شنبه 16 بهمن 1386, 08:29 صبح
سلام
دوست عزیز متد Invoke مربوط به فرم میشه که شما از طریق اون می تونی به صورت Thread Safe کد مورد نظرت رو اجرا کنی و ربطی به Collection نداره.

خطایی هم که گذاشتی احتمالا به خاطر اینه که شما از کلمه Collection استفاده کردی و هیجا تعریفش نکردی.

newgoldenman
سه شنبه 16 بهمن 1386, 09:55 صبح
خیلی خیلی ممنونم از توجه شما. خداوند خیرتان دهاد!
جنس d از یک Local Variable هست:

private void settvBuddyList_addGroups(string strGroup)
{
if (tvBuddyList.InvokeRequired)
{
dtvBuddyList_addGroups d = new dtvBuddyList_addGroups(settvBuddyList_addGroups);
this.Invoke(d, new object[] { strGroup });
}
else
{
tvBuddyList.Nodes.Add(strGroup);
}
}

این هم تعریف Collection دار داخل برنامه که یادم رفت براتون بنویسم، شرمنده:خجالت:

private Collection _cIM = new Collection();

و این هم یکی از موارد استفاده ی اون:

frmIM IM = (frmIM)_cIM.Item(strUser);

باز هم ممنونم از توجه شما عزیزان.
راستی، آقای Masoud_TB ، پایگاه تخصصی نرم افزار رو ترکوندی، اومدی اینجا رو هم نورباران کنی از تجربیات و علم فوق العادتون توی Net. :قلب: ارادت خاصی دارم بنده نسبت به شما.

newgoldenman
سه شنبه 16 بهمن 1386, 17:49 عصر
اگر خودتون کد ویبی که دادم رو با هر Converter ای تبدیل کنید، نمیتونه Collection رو به #C تبدیل کنه و Error‌میده.
مشکل من هم دقیقاً همینه :(

کسی نیست بتونه مشکل منو حل کنه؟

newgoldenman
چهارشنبه 17 بهمن 1386, 09:47 صبح
نیست کسی که مرا یاری کند؟!

Masoud_TB
چهارشنبه 17 بهمن 1386, 11:14 صبح
سلام. از لطفی که داری سپاس گذارم. ولی مگه ما بمب گذاریم یا عملیات میکنیم که میگی ترکوندی :قهقهه:
اما در مورد سوالت فکر می کنم که شما داری از این کلاس Collection استفاده می کنی ولی تعریفش رو نداری. ببین رو کلاس Collection راست کلیک کن و Go to definition رو انتخاب کن. من مطمئنم که این کلاس یک کلاس خاص در یک پروژه (شاید همین بوده) ولی الان به هر دلیلی مثلا عدم استفاده از using به شما خطا می ده. در نهایت اگر نشد لطفا کن کد رو میل کن تا ببینم مشکلش چیه؟

newgoldenman
چهارشنبه 17 بهمن 1386, 12:01 عصر
باز هم ممنون مسعود جان.
Go To Definiton داخل محیط #C برای Collection هیچ چیزی رو نمیاره! چون اصلاً تعریف نشده هست.
از
Microsoft.VisualBasic.Collection.Collection()
هم میخوام استفاده کنم، نمیشناسه. انگار توی #C نمیشه از NameSpace های VB استفاده کرد، نه؟!
اگه #C بتونه این خط رو بشناسه، همه چیز حلله!

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

Masoud_TB
چهارشنبه 17 بهمن 1386, 12:32 عصر
سلام.
دو تا کار بکن:
1. Add Reference کن به microsoft.visualbasic.dll
2. باید از Microsoft.VisualBasic using کنی.

امیدوارم مشکلت حل شه.

newgoldenman
چهارشنبه 17 بهمن 1386, 13:09 عصر
به لطف خدا و کمک دوست عزیزمون مسعود جان، مشکلم حل شد.
از تمامی دوستانی که در رفع این مشکل گام برداشتند، صمیمانه سپاسگذارم.