# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > دسترسی به داده ها (ADO.Net و LINQ و ...) >  خواندن  dbf در 2005 C#‎

## ali2000_1358

من می خوام با 2005 C#‎ به فایلهای dbf مربوط به foxpro وصل شوم و به رکوردهای آن دسترسی پیدا کنم ممکنه من رو راهنمائی کنید .اصلا همچین امکانی وجود دراد یا نه

----------


## علیرضا مداح

سلام ،
باید از اشیاء فضای نام System.Data.Odbc استفاده نمایید.

----------


## KavoshGar_ir

> من می خوام با 2005 C#‎ به فایلهای dbf مربوط به foxpro وصل شوم و به رکوردهای آن دسترسی پیدا کنم ممکنه من رو راهنمائی کنید .اصلا همچین امکانی وجود دراد یا نه


از sql server هم می توانید استفاده کنید به عبارتی خواندن فایل را توسط یک stored procedure به sql server بسپارید و بعد از مقادیری که خوانده در برنامه تان استفاده کنید.

----------


## MKalami

> باید از اشیاء فضای نام System.Data.Odbc استفاده نمایید


با کلاسهای موجود در این فضای نام میتونی از فایل text,paradox,faxpro گرفته تا بانکهای اطلاعاتی sqlserver,oracle رو بخونی و تغییر بدی.

----------


## night_walker

شما می توانید از ODBC استفاده کنید ولی با فارسی به مشکل می خورید. برای حل این مشکل هم اگر جستجو کنید راه حل را پیدا می کنید. در تاپیک های فاکس پرو جستجو کنید.

----------


## ali2000_1358

دستتون درد نکنه من از odbc استفاده کردم و به بانک وصل شدم . در odbcAdapter در پیش نمایش اطلاعات رو نشان می دهد ولی وقتی می خواهم اطلاعات رو fill کنیم و در گرید مشاهده کنیم پیغام خطای زیرو می دهد 

ERROR [HY000] [Microsoft][ODBC dBase Driver] Unexpected error from external  database driver (15877).

----------


## ali2000_1358

دوستان کسی نمی دونه علت این پیغام خطا چی هست  . 
کسی در این مورد  یک مثال ندارد به من  بده

----------


## gdevnb

لطف کن و کد مربوط به این قسمتو بزار.

----------


## Milad Mohseny

چطوری میشه Tooltip Balloon رو کاملاً Right to Left  کرد؟؟

----------


## mostafa.vahab

به این یه نگاهی بکن 
شاید به دردت بخوره

----------


## gdevnb

> به این یه نگاهی بکن 
> شاید به دردت بخوره


کد خوبی بود مرسی.
ولی مشکل RTL رو حل نکرد.

----------


## armiya

سلا م : من می خوام یه گزارشی رو مثل مثال زیر چاپ کنم با این تفاوت که اطلا عات گزارش از طر ف کار بر وارد می شه
مثال :
نام                        نام خانوادگی                 نام پدر                   شماره شناسنامه        
در تاریخ              فارغ تحصیل شد
در این مثال جای خالی می خوام پر کنم اگه کسی اطلا عاتی درباره این داره یه تو ضییحخ بده چه کار باید بکنم ایا این کار با crstal report  امکان دار ه یا نه ممنون :لبخند: 
---------------------------------------------------------------------------
بر روی هر پله ای که باشی خدا یک پله از تو بالاتر است نه فقط بر ای اینکه خداست برای اینکه دستت را بگیرد

مثلا نام را علی نام خانوادگی اکبری و...............

----------


## علیرضا مداح

سلام ،
در صورتیکه اطلاعات گزارش از دیتابیس گرفته نمیشود و در همان زمان از کاربر گرفته میشود میتوانید چند TextObject در گزارش قرار داده و از طریق کالکشن ReportClass.ReportDefinition.ReportObjects به شی ء مورد نظر دسترسی داشته باشید ، ولی اگر گزارش شما به همین سادگی است پیشنهاد میکنم از PrintPreviewControl و PrintDocument استفاده نمایید.

----------


## Milad Mohseny

ممنون از برنامه ولی کاری که من گفتم یه چیزه دیگه بود.

----------


## ali2000_1358

آقا دستت درد نکنه . ببخشید که sourceدیر گذاشتم  :خجالت: ممنون میشم یک نگاه بندازی :خجالت:

----------


## احمد غلامی

من یه جستجو انجام میدم و نتیجه اشو در یه dataGridview نشون میدم حالا از طریق کد نویسی میام و یکی از رکورد های مشاهده شده رو از دیتا بیسم حذف میکنم مشکلم اینکه می خوام به محض حذف یه رکورد ، رکورد مد نظر از dataGridview هم حذف بشه که این کارو نمیتونم انجام بدم  من dataGridview  رو update و refresh  هم کردم ولی باز جواب نداد. البته کد حذفم هیچ ربطی به dataGridview نداره و  از بانک  حذف میکنه  یعنی کاربر کد رکورد مشاهده شده در dataGridviw رو دریک textbox  وارد میکنه و دکمه حذف رو میزنه . ممنون میشم راهنماییم کنید

----------


## hassan razavi

DataTable متصل به DataGride را مجددا Fill کنید

----------


## ali2000_1358

دوستان اگر ممکنه لطف کنید یک نگاهی به این source ما بندازید

----------


## rostamedastan

بسم الله الرحمن الرحیم
سلام علیکم
من می خواهم برنامه ایکه با C#‎ به صورت windows Application نوشته ام و از بانک اطلاعاتی Sql Server استفاده می کنم را در شبکه قرار دهم تا مثلا 7 یا 8 نفر از آن استفاده کنند اما از همزمانی کاربران در استفاده از جداول می ترسم مثلاً اگر کاربری اطلاعات دانشجوی شماره 10 را بازیابی کرد و بعضی از فیلدهای آن را تغییر داد ولی هنوز کلید ذخیره تغییرات را نزده و کاربر دیگری در این لحظه اطلاعات همان دانشجو را بازیابی کند و در همین لحظه کاربر اول اطلاعات را ذخیره می کند اما مشکل اینجا است که کاربر دوم هنوز همان اطلاعات قبلی را می بیند پس در اینصورت در صورت تغییرات یا حذف مشکل پیش می آید راه حل چیست ؟ 
1-چطور می توان کاری کرد که اگر کاربر اول اطلاعات دانشجوی شماره 10 را بازیابی کرد دیگر کسی نتواند این اطلاعات را بازیابی کند تا او تغییرات را انجام دهد ؟ البته در صورت اینکار باید چطور به سیستم بفهمانیم که قفل رکورد را باز کند ؟
2-در حالی که در برنامه از فناوری   ADO.NET استفاده می کنیم و ADO.NET بی اتصال به بانک است چگونه می توان به سیستم بفهمانیم که کار ما با فلان رکورد هنوز تمام نشده است ؟
3-من جست و جو کردم و در مورد قفلها یکی از اعضا گفته بود که در جلوی جدولی که می خواهی قفل کنی از کلمه (TABLOCKX)  استفاده کن ولی متوجه شدم که این نوع قفل گزاری مربوط به لحظات میلی ثانیه می شود که دو کاربر تقریباً همزمان با هم رکوردی را می خواهند تغییر دهند.
4- اصلاً آیا ایت مشکلی که من مطرح کردم تبیعی است و کاریش نمیشه کرد ؟
5- من خودم پیشنهاد می کنم که در ابتدای هر تغییر یا حذفی یک SELECT قرار دهیم تا اگر اطلاعات داخل جدول همان است که کاربر دوم در فرم می بیند پس سیستم عملیات ذخیره را انجام دهد در غیر اینصورت با اعلام پیغامی مبنی بر اینکه اطلاعات تغییر کرده اطلاعات جدید را نمایش دهد و تغییرات کاربر دوم را اعمال نکند آیا این روش خوبی است ؟

----------


## Pioneers

از Transaction استفاده کنید. هم در C#‎ و هم در Sql Server موجود است. دارای قفلهای مختلفی است از جمله برای نوشتن، خواندن و ...

----------


## vcldeveloper

بطور کلی دو نوع قفل گزاری وجود داره، Optimistic و Pessimistic. در روش Optimistic آخرین ویرایشی که روی یک رکورد انجام شده، در بانک ذخیره میشه؛ یعنی اگر دو کاربر هم زمان با هم یک رکورد را ویرایش کنند، تغییرات کاربری که دیرتر اقدام به ذخیره کردن کرده، در بانک ثبت میشه. در روش Pessimistic، اگر رکوردی توسط کاربری ویرایش بشه، رکورد قفل میشه. اگر کاربری دومی بخواد رکورد را ویرایش کنه، پیغام خطا دریافت میکنه و مجبور میشه که رکورد را Refresh کنه تا تغییرات کاربر اول ظاهر بشند. البته این امکان هم وجود داره که تعیین کنید برای اعمال ویرایش چه نوع فیلدهای از رکورد باید چک بشند. اگر All باشه، یعنی در زمان ثبت تغییرات اگر حتی یکی از فیلد های رکورد مربوطه توسط کاربر دیگه ایی تغییر کرده باشه، عملیات با شکست مواجه میشه. اگر Key Fields باشه، در صورتی که یکی از فیلدهای کلید قبل از ثبت رکورد تغییر کرده باشه، عملیات شکست میخوره. یک حالت دیگه هم هست که میگه اگر مقادیر فیلدهایی که توسط کاربر تغییر کردند، توسط کاربر دیگه ایی تغییر کرده باشند، عملیات شکست بخوره، مثلا کاربر فیلد نام رو می خواد تغییر بده، کاربر دیگه ایی در همون زمان فیلد تاریخ تولد همون رکورد رو ویرایش میکنه. در این حالت عملیات با شکست مواجه نمیشه، اما اگر هر دو کاربر فیلد نام را ویرایش کنند، کاربری که دیرتر نسبت به ثبت تغییرات اقدام کرده، با خطا مواجه میشه.
همچنین، SQL Server 2005 سرویس Notification هم ارائه میکنه که به سرور این امکان رو میده که در صورت پیش آمدن شرایط خاصی، کلاینت ها را مطلع کنه، مثلا اگر رکوردی تغییر کرد، به کلاینت ها اطلاع بده تا داده های خود را Refresh کنند.

اینایی که گفتم، غیر از Notification Service، حتی با ADO و SQL Server 2000 هم قابل انجام هستند، البته من چون آشنایی خاصی با #C ندارم، نمی دونم توی #C چطور پیاده سازی شدند.

----------


## علیرضا مداح

سلام ،
یک روش هم به کارگیری Timestamp میباشد :
http://www.codeproject.com/KB/aspnet...ntupdates.aspx

----------


## armiya

سلا م مممنون از را هنما یی تون ولی می خوام که اطلا عات تو یه دیتا بیس ذخیره بشه و در هنگامی که ذخیره شده کاربر بتونه متن مورد نظر رو تو مو قعیت های خودش قرار بدهو گزارش رو به طرف بده  من با crystal report  کمی کار کردم ولی متا سفانه نشد اگه ممکنه یه مثال در بارش واسم بزارین ممنون می شم 
-----------------------------------------------------------------------
رنگین کمان پاداش کسانی است که تا اخرین قطره زیر باران می مانند

----------


## bachebahal_1363

سلام خدمت دوستان 
سوال من این هست که برای مثال من یک فرم parent دارم و یک فرم Child و در فرم Parent یک سری menu حال می خواهم توسط فرم Child که به عنوان فرم LogIn برنامه من هست اگر نام کاربری و رمز عبور رو به درستی تایپ کرد و کلید ورود را فشار داد یک سری منو ها فعال شود در غیر این صورت منو ها به صورت غیر فعال باقی بماند 
اگر کسی می تواند کمک کنه
در Vb.Net به راحتی با دستور زیر می توان این کار را انجام داد چون با ساخت یک آبجکت فرم Parent تمامی کنترل های موجود در فرم Parent قابل استفاده در فرم Child بود و هر تغییری به راحتی صورت می گرفت . 
Dim frm as new Form1
frm.menubar1.visible=false

----------


## rostamedastan

با تشکر از تمام دوستان اما آقای کشاورز این دونوع قفلی که گفتید Optimistic و Pessimistic آیا این برای زمانی هست که کاربر دقیقا در یک زمان تقریبا مساوی و با اختلاف میلی ثانیه می خواهند رکورد را تغییر دهند ؟
من منظورم این است که اگر کاربر اول رکوردی را بازیابی کرد و کاربر دوم مثلا 10 ثانیه بعد همان رکورد را بازیابی کرد و چون ADO.net پس از بازیابی و اجرای query اتصال را قطع می کند حالا اگر اولی کلید ذخیره تغییرات را بزند پس دومی هنوز اطلاعات قبلی را که بازیابی کرده می بیند پس او نیز تغییراتی را می دهد غافل از اینکه رکورد قبلاً تغییر کرده پس چکار کنیم که این شرایط پیش نیاید؟
در مورد Transaction هم توضیحی بدهید  که چه کار می کنند؟
آقای مداح می شود در مورد روش Timestamp هم توضیح بدهید؟

اما روش من این است که برای هر رکورد فیلدی مانند change بگذارم که یا 1 است یا 0 و بطور پیش فرض صفر است پس اگر کاربری رکوردی را باز یابی کرد و کلید درخواست تغییرات را انتخاب کرد مقدار فیلد 1 می شود یعنی رکورد در حال استفاده است و تا زمانیکه از این رکورد به هر نحوی خارج نشده مقدار 1 باقی می ماند و به محض خارج شدن و یا انجام تغییرات مقدار 0 می شود در این صورت اگر هر کاربری رکوردی را بازیابی کند اگر مقدار این فیلد 1 باشد یعنی در حال استفاده است و سیستم به کاربر اجازه تغییرات را نمی دهد فقط اجازه دیدن را می دهد. آیا این کار روش درستی است؟

----------


## tthenry14plus

از DataSet استفاده کن.
Project --> Add New Item --> DataSet
فیلدهای مورد نظرتو اونجا بساز و در هنگام ورود اونها به DataSet ارسال کن.

مثلا جدولی با نام MyDB در DataSet1 ایجاد کرده ای و
n فیلد متنی برای آن ساخته ای:

DataSet1 ds = new DataSet1();
CrystalReport1 cr = new CrystalReport1();
DataSet1.MyDBRow ir = ds.MyImage.NewMyDBRow();
 
ir[0] = "متن ورودی";
ir[1] = "متن ورودی";
.
.
.
 
ir[n] = "متن ورودی";
 
ds.MyImage.Rows.Add(ir);
cr.SetDataSource(ds);
this.crystalReportViewer1.ReportSource = cr;


یادت باشه در هنگام ساخت CrystalReport از مسیری که در عکس ضمیمه مشخصه بری و کانکشن کریستال ریپورتتو 
به دیتاست مربوط کنی :

----------


## vcldeveloper

> این دونوع قفلی که گفتید Optimistic و Pessimistic آیا این برای زمانی هست که کاربر دقیقا در یک زمان تقریبا مساوی و با اختلاف میلی ثانیه می خواهند رکورد را تغییر دهند ؟


خیر، هر زمان که داده ایی از سرور درخواست می کنید، سرور یک RecordSet برای کلاینت ارسال میکنه؛ یعنی جدولی محتوی یک یا چند رکورد. کاربر میتونه این رکوردها رو تغییر بده، ولی وقتی که می خواد تغییرات رو در بانک اطلاعاتی (سرور) ثبت کنه، اگر رکورد مربوطه در سمت سرور با رکوردی که کلاینت ابتدا از سرور گرفته بود، فرق داشته باشه، یعنی فرد دیگه ایی در این فاصله اون رکورد رو تغییر داده. حالا در این شرایط، اگر نوع قفل Optimistic باشه، تغییرات کاربر روی تغییرات کاربر قبلی نوشته میشه. اگر Pessimistic باشه، خطایی مبنی بر اینکه رکورد مورد نظر تغییر کرده، یا رکورد مورد نظر پیدا نمیشه (بستگی به نوع فیلدهایی که باید چک بشند داره) ایجاد میشه و کاربر نمی تونه تغییراتش رو ثبت کنه و باید رکورد را Refresh کنه. 
توی #C نمیدونم، ولی توی دلفی در همچین مواقعی می شد در صورت لزوم، بصورت خودکار پیامی به کاربر نشون داد که در آن مقادیر فعلی فیلدهای رکورد، و مقادیر جدیدی که توسط کاربر وارد شده بود، نمایش داده می شدند و کاربر می تونست خودش انتخاب کنه که آیا با توجه به مقادیر فعلی فیلدها، آیا هنوز باید ثبت تغییرات انجام بشه، یا نه.

----------


## rostamedastan

یعنی من در #C خودم به صورت دستی همانطور که در تاپیک بالا گفتم که یک فیلد مثلا با نام change عمل کنم یا کد وتابعی برای این کار وجود دادر؟
مثلا آیا در دلفی چنین تابعی وجود دارد؟

----------


## vcldeveloper

> یعنی من در #C خودم به صورت دستی همانطور که در تاپیک بالا گفتم که یک فیلد مثلا با نام change عمل کنم یا کد وتابعی برای این کار وجود دادر؟


امکاناتی که برای Lock کردن گفتم، مربوط به ADO و SQL Server میشند و باید در ADO.Net هم موجود باشد. تمام اون کارهایی که گفتم توسط خود ADO و سرور بانک اطلاعاتی انجام میشه، نه اینکه شما خودتون توی برنامه تون از فیلدی برای این کارها استفاده کنید! شما فقط نوع قفل رو تعیین می کنید، مابقی کارها رو خودشون انجام میدن.




> مثلا آیا در دلفی چنین تابعی وجود دارد؟


در دلفی کامپوننتی بنام ClientDataSet وجود داره که کار با اون شبیه اینه که بخواید با ADO.Net بصورت Disconnected کار کنید. این کامپوننت هر زمان که در ثبت رکوردی در بانک تداخلی پیش بیاد، Event ایی رو فعال میکنه که شما می تونید با توجه به اون، مقدار قبلی رکورد، مقدار فعلی رکورد در بانک، و مقداری رو که خودتون تغییر دادید و می خواستید ثبت کنید رو ببینید، و بر اساس این مقادیر تصمیم بگیرید که آیا تغییرات ثبت بشند یا نه، یا اینکه تصمیم گیری را بر عهده کاربر برنامه بزارید.

----------


## mehdi.mousavi

> بسم الله الرحمن الرحیم
> سلام علیکم
> من می خواهم برنامه ایکه با C#‎ به صورت windows Application نوشته ام و از بانک اطلاعاتی Sql Server استفاده می کنم را در شبکه قرار دهم تا مثلا 7 یا 8 نفر از آن استفاده کنند اما از همزمانی کاربران در استفاده از جداول می ترسم مثلاً اگر کاربری اطلاعات دانشجوی شماره 10 را بازیابی کرد و بعضی از فیلدهای آن را تغییر داد ولی هنوز کلید ذخیره تغییرات را نزده و کاربر دیگری در این لحظه اطلاعات همان دانشجو را بازیابی کند و در همین لحظه کاربر اول اطلاعات را ذخیره می کند اما مشکل اینجا است که کاربر دوم هنوز همان اطلاعات قبلی را می بیند پس در اینصورت در صورت تغییرات یا حذف مشکل پیش می آید راه حل چیست ؟ 
> 1-چطور می توان کاری کرد که اگر کاربر اول اطلاعات دانشجوی شماره 10 را بازیابی کرد دیگر کسی نتواند این اطلاعات را بازیابی کند تا او تغییرات را انجام دهد ؟ البته در صورت اینکار باید چطور به سیستم بفهمانیم که قفل رکورد را باز کند ؟
> 2-در حالی که در برنامه از فناوری   ADO.NET استفاده می کنیم و ADO.NET بی اتصال به بانک است چگونه می توان به سیستم بفهمانیم که کار ما با فلان رکورد هنوز تمام نشده است ؟
> 3-من جست و جو کردم و در مورد قفلها یکی از اعضا گفته بود که در جلوی جدولی که می خواهی قفل کنی از کلمه (TABLOCKX)  استفاده کن ولی متوجه شدم که این نوع قفل گزاری مربوط به لحظات میلی ثانیه می شود که دو کاربر تقریباً همزمان با هم رکوردی را می خواهند تغییر دهند.
> 4- اصلاً آیا ایت مشکلی که من مطرح کردم تبیعی است و کاریش نمیشه کرد ؟
> 5- من خودم پیشنهاد می کنم که در ابتدای هر تغییر یا حذفی یک SELECT قرار دهیم تا اگر اطلاعات داخل جدول همان است که کاربر دوم در فرم می بیند پس سیستم عملیات ذخیره را انجام دهد در غیر اینصورت با اعلام پیغامی مبنی بر اینکه اطلاعات تغییر کرده اطلاعات جدید را نمایش دهد و تغییرات کاربر دوم را اعمال نکند آیا این روش خوبی است ؟



در محیطهای چند کاربره، دو مدل برای بهنگام سازی اطلاعات در بانک وجود داره: 

1. همزمانی Pessimistic (بدبینانه)
2. همزمانی Optimistic (خوش بینانه)

در روش اول، اطلاعات بهنگام خونده شدن از بانک، قفل میشه. در واقع شما رکورد خونده شده رو در سطح بانک قفل میکنید تا کسی اجازه دسترسی به اون رکورد رو نداشته باشه (تا تموم شدن کار ویرایش و ذخیره توسط شما). تو این روش شما 100% مطمئن هستید که هیچکس اجازه تغییر رکورد رو در فاصله ای که شما رکورد رو checked out کردین نداره و کاربرهای دیگه ملزم هستن تا هنگامیکه شما ذخیره رکود رو به پایان نرسوندین، صبر کنن.

اما در روش دوم، شما رکورد رو lock نمیکنید و اجازه میدید تا هر کاربری که مایل بود رکورد رو دریافت کنه و *خوش بین* هستید که کسی قبل از شما رکورد رو تغییر نخواهد داد. اما، خوش بینی کافی نیست، شما باید بعنوان طراح نرم افزار از تغییرات احتمالی رکورد (توسط دیگران) قبل از ذخیره اون، اطلاع حاصل کنید و اقدام مقتضی رو اعمال کنید.

بسته به تعداد کاربران و نوع کاربرد نرم افزار، روش بدبینانه ممکنه باعث بشه تا کاربران مدت زمان زیادی معطل آزاد شدن قفل باشن و در موارد بیسیار زیادی حتی این مساله منجر به deadlock در سطح بانک بشه، چون ممکنه کاربران زیادی رکورد مورد نظرشون رو برای مدت زمان مدیدی در حالت lock نگه دارن. تو چنین حالتی چه اتفاقی می افته؟ Application کاربران به timeout میخوره و همه ناراضی هستن، بخصوص از کسانی که رکوردها رو برای مدت زمان زیادی lock نگه میدارن.

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

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

پس قاعدتا از اونجاییکه نمیخواهیم رکورد ها بمدت زمان زیادی lock بمونن، تا باعث کاهش کارایی نرم افزار بطرز چشمگیری بشیم، روش خوش بینانه رو در اعمال خواهیم کرد. این روش بسرعت منابع گرفته شده توسط سیستم عامل رو به سیستم بر میگردونه تا دیگران نیز در صورت لزوم این شانس رو داشته باشن که رکورد مورد نظر رو تغییر بدن.

روشهای زیادی برای حل مشکل همزمانی خوش بینانه وجود داره. اولین روش این هستش که *هیچ کاری نکنید*! ممکنه این روش در ابتدا عجیب بنظر برسه، اما در واقعیت این هم یک راهکار هستش. کی از این راهکار باید استفاده بشه؟ وقتیکه نرم افزارتون تک کاربره هستش، یا احتمال وقوع همزمانی در اون بسیار بسیار پایین باشه و دو مرتبه نوشتن اطلاعات روی اطلاعاتی که توسط کاربر دیگه بهنگام شده، ناچیز بنظر برسه. در چنین شرایطی مطمئنا روش "هیچ کاری نکنید" بهترین روشه. به این روش *Last-in-wins* هم میگن، چون همواره اطلاعات توسط آخرین کاربری که اطلاعات رو بهنگام میکنه، در بانک ذخیره خواهد شد.

روش دوم، *چک کردن کلیه فیلدها* هنگام Update کردن رکورد هستش. شما رکورد رو Update نخواهید کرد، مگه اینکه مطمئن باشید کلیه فیلدهای اون رکورد همون مقادیری رو دارن که هنگام Query کردن رکورد داشتن! به این ترتیب مطمئن هستید که اون رکورد توسط دیگران تغییر نکرده و اونو میتونید با خیال راحت، تغییر بدید.

روش سوم، *چک کردن فیلدهایی هستش که شما قصد بهنگام سازی اونها رو دارین*. مثلا اگر یک رکورد حاوی 5 فیلد باشه، و شما فقط قصد بهنگام کردن فیلد شماره دو رو داشته باشین، دیگه نیازی نیست از عدم تغییر محتوای چهار فیلد دیگه بهنگام Update اطمینان حاصل کنید. این روش کارایی بهتری داره و این امکان رو فراهم میکنه تا احتمال وقوع همزمانی نیز کاهش پیدا کنه.

اما در روش چهارم، کافی هستش *جدول مورد نظر شما حاوی فیلدی از نوع timestamp باشه*. (در برخی از بانکها به این فیلد rowversion هم میگن). این فیلد بصورت خودکار توسط بانک بازای هر row تولید میشه، و هر وقت که فیلدی از اون رکورد تغییر کنه، فیلد timestamp بصورت خودکار Update میشه. به این ترتیب کافی هستش هنگام Update کردن row، فقط row هایی رو Update کنیم که مقدار timestamp اشون همون مقداری باشه که هنگام Query بوده. این روش معادل روش دوم هستش، اما از کارایی بسیار بهتری برخورداره.

اما چطور متوجه بشیم که یه همزمانی رخ داده؟ کافی هستش بعد از عمل Update، به مقدار RecordsAffected توجه کنیم. همونطوری که میدونید، بانکها مقداری تحت عنوان RecordsAffected بعد از اجرای سه عمل اصلی RUD، یعنی retrieve، update، و delete به کاربر بر میگردونن که تعداد رکوردهای تاثیر یافته از این سه عمل رو به کاربر بر میگردون. اگر این مقدار صفر باشه، یعنی رکورد مورد نظر پیدا نشده، در نتیجه، همزمانی رخ داده. یعنی یا اون رکورد توسط کاربر دیگه ای پاک شده، یا تغییر پیدا کرده.

----------


## bachebahal_1363

مثل اینکه کسی راه حلی توصیه نمی کنه

----------


## Pioneers

جالبه. اغلب با VB مقایسه میکنند و فکر میکنند این قابلیت اصلا در C#‎ وجود نداره.
در فرمی که میخواین به کنترلهاش دسترسی داشته باشین این کد رو بنویسین:

public static Form FRM_Temp;
private void Main_Load(object sender, EventArgs e)
{
FRM_Temp = this;
}
حالا در فرمی که میخواین این فرم رو تغییر بدین و منوهاشو مخفی کنید چیزی شبیه به این بنویسید:
Frm_Main.FRM_Temp.Controls.Find("TXT_Test", true)[0].BackColor = Color.Yellow;
که FRM_Main نام فرم دارای منو است.

البته راههای دیگه ای هم داره ولی زیباترین راهش همینه!

----------


## rostamedastan

با تشکر از تمامی دوستان که مرا راهنمایی کردند.
الان من کلاً با مفهوم انواع قفل آشنا شدم که قبلاً بلد نبودم حالا چگونه به مقدار این فیلد timestamp دسترسی داشته باشیم آیا باید به این فیلد مقدار اولیه بدهیم؟ آیا برای حل مشکل همزمانی باید برای تمامی جداول که امکان ویرایش کردن و حذف رکورد در آن از سوی کاربر وجود دارد یک فیلد از این نوع تعریف کرد؟
برای حل مشکل delete هم می شود از این فیلد استفاده کرد؟

همنین چه نیاز به این داریم که متوجه شویم چه وقت همزمانی اتفاق افتاده اگر همانطور که گفتید همواره مقدار timestamp را چک می کنیم تا اگر همزمانی اتفاق افتاده بود آن را حل کنیم

حالا چگونه به این مقدار RecordsAffected دسترسی داشته باشیم ؟

----------


## mehdi.mousavi

> با تشکر از تمامی دوستان که مرا راهنمایی کردند.
> الان من کلاً با مفهوم انواع قفل آشنا شدم که قبلاً بلد نبودم حالا چگونه به مقدار این فیلد timestamp دسترسی داشته باشیم آیا باید به این فیلد مقدار اولیه بدهیم؟ آیا برای حل مشکل همزمانی باید برای تمامی جداول که امکان ویرایش کردن و حذف رکورد در آن از سوی کاربر وجود دارد یک فیلد از این نوع تعریف کرد؟ برای حل مشکل delete هم می شود از این فیلد استفاده کرد؟
> 
> همنین چه نیاز به این داریم که متوجه شویم چه وقت همزمانی اتفاق افتاده اگر همانطور که گفتید همواره مقدار timestamp را چک می کنیم تا اگر همزمانی اتفاق افتاده بود آن را حل کنیم حالا چگونه به این مقدار RecordsAffected دسترسی داشته باشیم ؟


سلام.
بسته به اینکه کدوم روش رو انتخاب می کنید، می تونید یه فیلد timestamp تو هر جدولی داشته باشید. این فیلد نیازی نیست که default value داشته باشه. هر وقت رکوردی به این جدول اضافه بشه، مقدار timestamp بطور خودکار بهنگام میشه. هر وقت فیلیدی از این رکورد تغییر کنه، بازهم SQL Server بطور خودکار این فیلد رو بهنگام میکنه. (فرض من بر این هستش که شما از SQL Server بعنوان RDBMS استفاده می کنید).

در مورد این سوال که آیا میشه از همین فیلد برای Delete کردن استفاده کرد، پاسخ بازهم مثبت هستش. به این مثال دقت کنید:


DELETE FROM CustomerAccount
    WHERE 
        [AccountId] = @AccountId AND
        [ChangeStamp] = @ChangeStamp
در این دستور، تقاضای حذف رکوردی با AccountId مورد نظر و  ChangeStamp مربوطه می بینیم. اگر یکی از فیلدهای رکورد مورد نظر تغییر کرده باشه، در نتیجه دستور Delete موفق به پاک کردن رکورد نمیشه، چراکه ChangeStamp متفاوت از اون چیزی هستش که ما انتظار داریم. چون رکوردی پیدا نمیشه، RecordsAffected صفر خواهد بود و رکوردی حذف نخواهد شد. بعبارت دیگه در کد DALC، جایی که Command فوق الذکر رو اجرا میکنید، همچین شبه کدی خواهید داشت:


IDataReader reader = ExecuteReader(deleteCmd);
if (reader.RecordsAffected <= 0)
    throw new Exception("Concurrency occured!");
همونطوری که میبینید، RecordsAffected یک Property روی IDataReader هستش، که تعداد رکوردهای تاثیر یافته از آخرین دستور RUD رو بهتون میده!

----------


## bachebahal_1363

> جالبه. اغلب با VB مقایسه میکنند و فکر میکنند این قابلیت اصلا در C#‎ وجود نداره.
> در فرمی که میخواین به کنترلهاش دسترسی داشته باشین این کد رو بنویسین:
> 
> public static Form FRM_Temp;
> private void Main_Load(object sender, EventArgs e)
> {
> FRM_Temp = this;
> }
> حالا در فرمی که میخواین این فرم رو تغییر بدین و منوهاشو مخفی کنید چیزی شبیه به این بنویسید:
> ...


ابتدا بگم که اگر شما در Frm_main کد Public *static* Form Frm_Temp رو بنویسید
به علت اینکه از static استفاده کرده اید در فرم دوم قابل رویت نیست پس باید اون رو به صورت 
public Form Frm_Temp;
تعریف کنید 
اما در مورد کد نوشته در فرم دوم باید بگم که امتحانش کردم اما جوابی نداد
اگر به صورت یک فایل ضمیمه نمونه ای از یک پروژه رو برام بزارین ممنون می شم

----------


## sinpin

> سلام خدمت دوستان 
> سوال من این هست که برای مثال من یک فرم parent دارم و یک فرم Child و در فرم Parent یک سری menu حال می خواهم توسط فرم Child که به عنوان فرم LogIn برنامه من هست اگر نام کاربری و رمز عبور رو به درستی تایپ کرد و کلید ورود را فشار داد یک سری منو ها فعال شود در غیر این صورت منو ها به صورت غیر فعال باقی بماند 
> اگر کسی می تواند کمک کنه
> در Vb.Net به راحتی با دستور زیر می توان این کار را انجام داد چون با ساخت یک آبجکت فرم Parent تمامی کنترل های موجود در فرم Parent قابل استفاده در فرم Child بود و هر تغییری به راحتی صورت می گرفت . 
> Dim frm as new Form1
> frm.menubar1.visible=false





> مثل اینکه کسی راه حلی توصیه نمی کنه


برای مثال در فرم فرزند بنویسید :
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        (this.MdiParent as MDIParent1).menuStrip.Visible = false;
    }
}البته باید خاصیت modifier منو را نیز در فرم والد public کنید یا اینکه از طریق ایجاد یک پراپرتی پابلیک دسترسی به اون منو را فراهم کنید.

(در مثال بالا Form1 فرزند MDIParent1 بود)

----------


## mohamaddarbandi

سلام دوستان!
چطور میشه در سی شارپ مثل قلم paint نقاشی کشید؟
موضوع از این قراره که این نقاشی قراره تحت شبکه برای کلاینت های دیگه ارسال بشه و اونا حدس بزنند نقاشی کننده چی کشیده. لازم نیست زیاد حرفه ای باشه. در حد شبیه سازی خودکار و کاغذ معمولی!

----------


## Mahdi.Kiani

> سلام دوستان!
> چطور میشه در سی شارپ مثل قلم paint نقاشی کشید؟
> موضوع از این قراره که این نقاشی قراره تحت شبکه برای کلاینت های دیگه ارسال بشه و اونا حدس بزنند نقاشی کننده چی کشیده. لازم نیست زیاد حرفه ای باشه. در حد شبیه سازی خودکار و کاغذ معمولی!


اگر از ویژوال استودیو 2008 استفاده می کنید، که قضیه کاملا متفاوته.. ولی اگر از دات نت 2 استفاده می کنید، ابزار های زیادی برای نقاشی کردن وجود داره...
Pen
Brush
GradientBrush 
و ...

در فضای نام System.Drawing و زیر مجموعه های آن مانند System.Drawing.Drawing2D می تونین این ابزارها را پیدا کنید. در سایت های سورس کد هم بگردین، کلی از این نمونه برنامه های خواهید یافت
موفق باشید

----------


## hassan razavi

شما باید با Socket Programing آشنا باشید. بعد مشخصات موس را باید برای Client مقابل ارسال کنید (همراه با اطلاعات دیگه مثل رنگ انتخاب شده و ضخامت خط و ...)
حالا در طرف مقابل اطلاعات بدست آمده را توسط کلاس Graphics و متدهای Draw... رسم کنید

----------


## Mahdi.Kiani

> موضوع از این قراره که این نقاشی قراره تحت شبکه برای کلاینت های دیگه ارسال بشه و _اونا حدس بزنند نقاشی کننده چی کشیده_


آقای رضوی من فکر کنم ایشون می خوان عکس روی یک PC که احتمالا نقش سرور را ایفا می کنه ترسیم بشه، و سپس عکس برای کلاینت ها فرستاده بشه...

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

----------


## mohamaddarbandi

Ø§ÙÙØ§ ÙÙÙÙÙ Ø§Ø² ÙÙÚ¯Û! 
Ø¯Ø± Ø¬ÙØ§Ø¨ Ø´ÙØ§ ÙÙ Ø¨Ø§ÛØ¯ Ø¨Ú¯Ù ÙØ±Ø§Ø±Ù Ú©Ø³Û Ú©Ù ÙÙØ§Ø´Û ÙÛÚ©Ø´Ù Ø§Ø·ÙØ§Ø¹Ø§ØªØ´ real time ÛØ§ Ø¨Ø§ ØªØ§Ø®ÛØ± Ú©Ù Ø¨Ø±Ø§Û ÙÙÙ ÙØ±Ø³ØªØ§Ø¯Ù Ø¨Ø´Ù. ÚÙÙ ÙØ± Ú©Ø³ Ø³Ø±ÛØ¹ ØªØ± Ø­Ø¯Ø³ Ø¨Ø²ÙÙ Ø¨Ø±ÙØ¯Ù ÙØ³Øª Ù Ø§ÙØªÛØ§Ø² Ø¨Ø±ÙØ¯Ù Ø¨Ù Ø²ÙØ§Ù Ø­Ø¯Ø³Ø´ Ø§Ø±ØªØ¨Ø§Ø· Ø¯Ø§Ø±Ù. (Ø­Ø¯Ø³ Ø²ÙØ¯ØªØ± Ø§ÙØªÛØ§Ø² Ø¨ÛØ´ØªØ±)Ø¶ÙÙØ§ ÙÙØ¨Øª Ø¨Ø§Ø²Û ÙÛÚØ±Ø®Ù Ù ÙÙÚ©ÙÙ Ú©Ø³Û Ú©Ù Ø­Ø¯Ø³ ÙÛØ²ÙÙ Ø³Ø±Û Ø¨Ø¹Ø¯ ÙÙØ§Ø´ Ø¨Ø§Ø´Ù. ÙØ§Ø¶Ø­ØªØ± Ø¨Ú¯Ù ÙÙØ¨Øª ÙÛÚØ±Ø®Ù!

----------


## Mahdi.Kiani

> Ø§ÙÙØ§ ÙÙÙÙÙ Ø§Ø² ÙÙÚ¯Û! 
> Ø¯Ø± Ø¬ÙØ§Ø¨ Ø´ÙØ§ ÙÙ Ø¨Ø§ÛØ¯ Ø¨Ú¯Ù ÙØ±Ø§Ø±Ù Ú©Ø³Û Ú©Ù ÙÙØ§Ø´Û ÙÛÚ©Ø´Ù Ø§Ø·ÙØ§Ø¹Ø§ØªØ´ real time ÛØ§ Ø¨Ø§ ØªØ§Ø®ÛØ± Ú©Ù Ø¨Ø±Ø§Û ÙÙÙ ÙØ±Ø³ØªØ§Ø¯Ù Ø¨Ø´Ù. ÚÙÙ ÙØ± Ú©Ø³ Ø³Ø±ÛØ¹ ØªØ± Ø­Ø¯Ø³ Ø¨Ø²ÙÙ Ø¨Ø±ÙØ¯Ù ÙØ³Øª Ù Ø§ÙØªÛØ§Ø² Ø¨Ø±ÙØ¯Ù Ø¨Ù Ø²ÙØ§Ù Ø­Ø¯Ø³Ø´ Ø§Ø±ØªØ¨Ø§Ø· Ø¯Ø§Ø±Ù. (Ø­Ø¯Ø³ Ø²ÙØ¯ØªØ± Ø§ÙØªÛØ§Ø² Ø¨ÛØ´ØªØ±)Ø¶ÙÙØ§ ÙÙØ¨Øª Ø¨Ø§Ø²Û ÙÛÚØ±Ø®Ù Ù ÙÙÚ©ÙÙ Ú©Ø³Û Ú©Ù Ø­Ø¯Ø³ ÙÛØ²ÙÙ Ø³Ø±Û Ø¨Ø¹Ø¯ ÙÙØ§Ø´ Ø¨Ø§Ø´Ù. ÙØ§Ø¶Ø­ØªØ± Ø¨Ú¯Ù ÙÙØ¨Øª ÙÛÚØ±Ø®Ù!


Ø´ÙØ§ Ø¯ÙÛÙØ§ Ø¨Ú¯Ø´ÛÙ ÙØ´Ú©ÙØªÙÙ ÚÛÙØ
Ú©Ø´ÛØ¯Ù ÙÙØ§Ø´Û Ù Ø§ÛØ¬Ø§Ø¯ ÙØ¶Ø§ÛÛ ÙØ§ÙÙØ¯ Ø¨Ø±ÙØ§ÙÙ Paint Ø
ÙØ±Ø³ØªØ§Ø¯Ù  ÙØ§ÛÙ ÙÙØ§Ø´Û Ø´Ø¯Ù Ø¨ÛÙ Ú©ÙØ§ÛÙØª ÙØ§Ø
ÛØ§ ....

----------


## _alish_

https://barnamenevis.org/showthread.php?t=13904

----------


## combo_ci

Ø³ÙØ§Ù 
ÙÛØ®ÙØ§Ø³ØªÙ Ø¨Ø¨ÛÙÙ ÙÛØ´Ù ØªÙÛ Ú©Ø¯ ÙÙÙÛØ¯ Ú©Ù Ø¨Ø±ÙØ§ÙÙ ÚÙ ÙØ±Ù ÙØ§ÛÛ Ø¯Ø§Ø±Ù Ø ÛØ¹ÙÛ ÙØ«ÙØ§ ØªÙÛ ÛÚ© combo box Ø§Ø³Ù ÙØ±Ù ÙØ§Û ÛÚ© Ø¨Ø±ÙØ§ÙÙ Ø±Ù load Ú©ÙÙ

----------


## Ø±Ø¶Ø§ Ø¹Ø±Ø¨ÙÙ

ÛÚ© ÙÙÚÛÙ ÚÛØ²Û ÙÛØ´ÙØ¯.

System.Reflection.Assembly asmb = new System.Reflections.Assembly();
foreach(Sytem.Type t in asmb.GetTypes())
{
if (t is Form)
{
}
}

----------


## rostamedastan

Ø¢ÙØ§ Ø¯Ø³ØªØª Ø¯Ø±Ø¯ ÙÚ©ÙÙ Ø®ÛÙÛ Ø¹ÙÛ Ø¨ÙØ¯ ÙÙØ· Ø§Ú¯Ø± ÙØ·Ù Ú©ÙÛØ¯ Ú©ÙÛ Ø¯Ø± ÙÙØ±Ø¯ Ø§ÛÙIDataReader   Ú©ÙÛ ØªÙØ¶ÛØ­ Ø¨Ø¯ÛØ¯ Ú©Ù Ø§ÛÙØ·ÙØ± Ú©Ù ÙÙ ÙØªÙØ¬Ù Ø´Ø¯Ù Ø¨Ø§ Ø§ÛÙ Ú©Ø¯ ÙÛ ØªÙØ§Ù ÙÙÙÛØ¯ Ú©Ù ØªØ¹Ø¯Ø§Ø¯ Ø±Ú©ÙØ±Ø¯ÙÛ ØªØºÛÛØ± ÛØ§ÙØªÙ Ø±ÙÛ Ø¢Ø®Ø±ÛÙ Ø¬Ø¯ÙÙÛ Ú©Ù Ø±ÙÛ Ø¢Ù Ø¹ÙÙÛØ§Øª Ø§ÙØ¬Ø§Ù Ø¯Ø§Ø¯ÛÙ Ø±Ø§ Ø¨Ù ÙØ§ Ø¨Ø± ÙÛ Ú¯Ø±Ø¯Ø§ÙØ¯. ÛØ¹ÙÛ Ø§Ú¯Ø± ØªÙÙØ§ Ø±Ú©ÙØ±Ø¯ÙØ§Û Ø®Ø§ØµÛ Ø§Ø² Ø¬Ø¯ÙÙ ÙØ¹ÛÙ Ø±Ø§ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² ÙØ±Ø§Ø®Ø§ÙÛ storedprocedure ØªÙÙØ§ Ø¨Ø±Ø§Û Ø¯ÛØ¯Ù Ø¨Ø§Ø²ÛØ§Ø¨Û Ú©ÙÛÙ ÙÛ Ø´ÙØ¯ Ø¨Ø§Ø² ÙÙ Ø§Ø² Ø§ÛÙ Ø¯Ø³ØªÙØ± Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ø±Ø¯ ØªØ§ Ø¨Ú¯ÙÛØ¯ RecordsAffected = 0 Ø§Ø³Øª ÛØ§ ØªÙÙØ§ Ø¯Ø³ØªÙØ±Ø§Øª ÙØ±Ø¨ÙØ· Ø¨Ù delete , update  Ø±Ø§ ÚÚ© ÙÛÚ©ÙØ¯ Ø

ÙÙÚÙÛÙ ÙÙ ÙÙØªÛ Ø§ÛÙ Ø¯Ø³ØªÙØ±Ø§Øª Ø±Ø§ ÙÛ ÙÙÛØ³Ù Ø§Ø² Ø¯Ø³ØªÙØ± IDataReader reader = ExecuteReader(deleteCmd);  Ø§ÛØ±Ø§Ø¯ ÙÛ Ú¯ÛØ±Ø¯ Ù ÙÛ Ú¯ÙÛØ¯ ExecuteReader ÙØ¬ÙØ¯ ÙØ¯Ø§Ø±Ø¯ Ø§ÙØ¨ØªÙ Ø¨Ù Ø¬Ø§Û deleteCmd  ÙØ§Ù Ø´ÛØ¡  Command  Ø®ÙØ¯Ù Ø±Ø§ ÙÛ ÙÙÛØ³Ù

ØªØ¹Ø¯Ø§Ø¯ Ø±Ú©ÙØ±Ø¯ÙØ§Û ØªØ§Ø«ÛØ± ÛØ§ÙØªÙ Ø§Ø² Ø¢Ø®Ø±ÛÙ Ø¯Ø³ØªÙØ± RUD Ø±Ù Ø¨ÙØªÙÙ ÙÛØ¯Ù! Ú©Ù Ú¯ÙØªÛØ¯ ÙÙØ¸ÙØ± Ø§Ø²  RUD  ÚÛØ³Øª Ø

IDataReader Ø¨Ø§ SqlDataReader  ÚÙ ÙØ±ÙÛ ÙÛ Ú©ÙØ¯Ø Ø§Ú¯Ø± SqlDataReader Ø¨ÙØªØ± Ø§Ø³Øª Ø§Ø² SqlDataReader Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÙØ

----------


## combo_ci

Ú©Ø§Ø± ÙÚ©Ø±Ø¯ :(

----------


## Ø±Ø¶Ø§ Ø¹Ø±Ø¨ÙÙ

Ú©Ø¯ Ø¨Ø§ÙØ§ Ø±Ø§ Ø¨Ø¯ÙÙ VS ÙÙØ´ØªÙ Ø¨Ù ÙÙÛÙ Ø®Ø§Ø·Ø± Ø§Ø´ØªØ¨Ø§Ù ØªØ§ÛÙ¾Û Ø¯Ø§Ø´Øª. ÙÙÛ Ú©Ø¯ Ù¾Ø§ÛÛÙ Ø±Ø§ Ø¨Ø§ VS ÙÙØ´ØªÙ Ù Ø¬ÙØ§Ø¨ Ø¯Ø§Ø¯

int i = 0;
System.Reflection.Assembly asmb = System.Reflection.Assembly.GetExecutingAssembly();
foreach (System.Type t in asmb.GetTypes())
{
if (t.BaseType.Equals(typeof(System.Windows.Forms.Form)))
{
i++;
}
}

----------


## mehdi.mousavi

> Ø¢ÙØ§ Ø¯Ø³ØªØª Ø¯Ø±Ø¯ ÙÚ©ÙÙ Ø®ÛÙÛ Ø¹ÙÛ Ø¨ÙØ¯ ÙÙØ· Ø§Ú¯Ø± ÙØ·Ù Ú©ÙÛØ¯ Ú©ÙÛ Ø¯Ø± ÙÙØ±Ø¯ Ø§ÛÙIDataReader   Ú©ÙÛ ØªÙØ¶ÛØ­ Ø¨Ø¯ÛØ¯ Ú©Ù Ø§ÛÙØ·ÙØ± Ú©Ù ÙÙ ÙØªÙØ¬Ù Ø´Ø¯Ù Ø¨Ø§ Ø§ÛÙ Ú©Ø¯ ÙÛ ØªÙØ§Ù ÙÙÙÛØ¯ Ú©Ù ØªØ¹Ø¯Ø§Ø¯ Ø±Ú©ÙØ±Ø¯ÙÛ ØªØºÛÛØ± ÛØ§ÙØªÙ Ø±ÙÛ Ø¢Ø®Ø±ÛÙ Ø¬Ø¯ÙÙÛ Ú©Ù Ø±ÙÛ Ø¢Ù Ø¹ÙÙÛØ§Øª Ø§ÙØ¬Ø§Ù Ø¯Ø§Ø¯ÛÙ Ø±Ø§ Ø¨Ù ÙØ§ Ø¨Ø± ÙÛ Ú¯Ø±Ø¯Ø§ÙØ¯. ÛØ¹ÙÛ Ø§Ú¯Ø± ØªÙÙØ§ Ø±Ú©ÙØ±Ø¯ÙØ§Û Ø®Ø§ØµÛ Ø§Ø² Ø¬Ø¯ÙÙ ÙØ¹ÛÙ Ø±Ø§ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² ÙØ±Ø§Ø®Ø§ÙÛ storedprocedure ØªÙÙØ§ Ø¨Ø±Ø§Û Ø¯ÛØ¯Ù Ø¨Ø§Ø²ÛØ§Ø¨Û Ú©ÙÛÙ ÙÛ Ø´ÙØ¯ Ø¨Ø§Ø² ÙÙ Ø§Ø² Ø§ÛÙ Ø¯Ø³ØªÙØ± Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ø±Ø¯ ØªØ§ Ø¨Ú¯ÙÛØ¯ RecordsAffected = 0 Ø§Ø³Øª ÛØ§ ØªÙÙØ§ Ø¯Ø³ØªÙØ±Ø§Øª ÙØ±Ø¨ÙØ· Ø¨Ù delete , update  Ø±Ø§ ÚÚ© ÙÛÚ©ÙØ¯ Ø
> 
> ÙÙÚÙÛÙ ÙÙ ÙÙØªÛ Ø§ÛÙ Ø¯Ø³ØªÙØ±Ø§Øª Ø±Ø§ ÙÛ ÙÙÛØ³Ù Ø§Ø² Ø¯Ø³ØªÙØ± IDataReader reader = ExecuteReader(deleteCmd);  Ø§ÛØ±Ø§Ø¯ ÙÛ Ú¯ÛØ±Ø¯ Ù ÙÛ Ú¯ÙÛØ¯ ExecuteReader ÙØ¬ÙØ¯ ÙØ¯Ø§Ø±Ø¯ Ø§ÙØ¨ØªÙ Ø¨Ù Ø¬Ø§Û deleteCmd  ÙØ§Ù Ø´ÛØ¡  Command  Ø®ÙØ¯Ù Ø±Ø§ ÙÛ ÙÙÛØ³Ù
> 
> ØªØ¹Ø¯Ø§Ø¯ Ø±Ú©ÙØ±Ø¯ÙØ§Û ØªØ§Ø«ÛØ± ÛØ§ÙØªÙ Ø§Ø² Ø¢Ø®Ø±ÛÙ Ø¯Ø³ØªÙØ± RUD Ø±Ù Ø¨ÙØªÙÙ ÙÛØ¯Ù! Ú©Ù Ú¯ÙØªÛØ¯ ÙÙØ¸ÙØ± Ø§Ø²  RUD  ÚÛØ³Øª Ø
> 
> IDataReader Ø¨Ø§ SqlDataReader  ÚÙ ÙØ±ÙÛ ÙÛ Ú©ÙØ¯Ø Ø§Ú¯Ø± SqlDataReader Ø¨ÙØªØ± Ø§Ø³Øª Ø§Ø² SqlDataReader Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÙØ


Ø³ÙØ§Ù.
Ø¹Ø±Ø¶ Ú©Ø±Ø¯Ù Ú©ÙÛÙ Ø¯Ø³ØªÙØ±Ø§Øª RUDØ ÛØ¹ÙÛ SELECTØ UPDATE Ù DELETE Ø§Ø² Ø§ÛÙ ÙØ§Ø¹Ø¯Ù Ù¾ÛØ±ÙÛ ÙÛÚ©ÙÙ. Ø¨Ø¹Ø¨Ø§Ø±Øª Ø¯ÛÚ¯Ù Ø¨Ø¹Ø¯ Ø§Ø² Ø§Ø¬Ø±Ø§Û ÙØ± ÛÚ© Ø§Ø² Ø§ÛÙ Ø¯Ø³ØªÙØ±Ø§Øª Ø´ÙØ§ ÙÛ ØªÙÙÛØ¯ Ø¨Ù RecordsAffected ÙØ±Ø§Ø¬Ø¹Ù Ú©ÙÛØ¯ Ù ØªØ¹Ø¯Ø§Ø¯ Ø±Ú©ÙØ±Ø¯ÙØ§Û ØªØ§Ø«ÛØ± ÛØ§ÙØªÙ Ø§Ø² Ø¢Ø®Ø±ÛÙ Ø¯Ø³ØªÙØ± Ø±Ù Ø¨Ø¨ÛÙÛØ¯. Ø§ÙØ¨ØªÙ ÙÚ©Ø§Øª Ø¸Ø±ÛÙÛ Ø¯Ø± Ø¹ÙÙ Ø¨Ù ÙÛØ§Ù ÙÛØ§Ø¯Ø Ø§Ø² Ø¬ÙÙÙ Cursor Side Ù ... Ú©Ù Ø¨Ù ÙØ±ÙØ± Ø²ÙØ§Ù Ø¨Ù Ø§ÛÙ ÙØ³Ø§Ø¦Ù Ù¾Û Ø®ÙØ§ÙÛØ¯ Ø¨Ø±Ø¯.

ExecuteReader ÛÚ©Û Ø§Ø² ÙØªÙØ¯ÙØ§Û Ú©ÙØ§Ø³ Command ÙØ³ØªØ´. Ø§Ú¯Ø± Ø¯ÙØª ÙÛÚ©Ø±Ø¯ÛØ¯Ø Ø¯Ø± ÙÙØ´ØªÙ ÙØ§Û Ø®ÙØ¯Ù Ú¯ÙØªÙ Ø¨ÙØ¯Ù "Ø´Ø¨Ù Ú©Ø¯"... Ø¯Ø± ÙØªÛØ¬ÙØ Ø´ÙØ§ ExecuteReader Ø±Ù Ø±ÙÛ Command Ø§Û Ú©Ù Ø³Ø§Ø®ØªÛØ¯ ÙÛØ²ÙÛØ¯...

ÙÙØ¸ÙØ± Ø§Ø² RUDØ Ø­Ø±ÙÙ Ø§ÙÙ Ø³Ù Ú©ÙÙÙ retrieveØ updateØ Ù delete ÙØ³ØªØ´. ÙÙØ¸ÙØ± Ø§Ø² retrieve ÙÙÙÙ select ÙØ³ØªØ´. Ø¨ÙÛÙ Ø§Ø´ ÙÙ Ú©Ù ÙØ´Ø®ØµÙ.

Ú©ÙØ§Ø³ SqlDataReader Ø¯Ø± ÙØ§ÙØ¹ IDataReader Ø±Ù implement Ú©Ø±Ø¯Ù. ÚÙÙ ÙÙ ÙØ·ÙØ¦Ù ÙØ¨ÙØ¯Ù Ú©Ù Ø´ÙØ§ Ø§Ø² ÚÙ Data Reader Ø§Û Ø§Ø³ØªÙØ§Ø¯Ù ÙÛÚ©ÙÛØ¯Ø ÙØ§Ø³Ù ÙÙÛÙ Ø§ÙÙ Ø§ÛÙØªØ±ÙÛØ³ Ø±Ù Ø¯Ø± "Ø´Ø¨Ù Ú©Ø¯Ù" ÙÙØ´ØªÙ... Ø¨Ø¹ÙÙØ§Ù ÙØ«Ø§ÙØ ÙØ§ DbDataReaderØ SqlDataReaderØ OleDbDataReaderØ OdbcDataReader Ù OracleDataReader Ø±Ù Ø¯Ø§Ø±ÛÙ Ú©Ù ÙÙÚ¯Û Ú©ÙØ§Ø³ÙØ§ÛÛ ÙØ³ØªÙ Ú©Ù IDataReader Ø±Ù implement Ú©Ø±Ø¯Ù... Ø¨Ø±Ø§Û Ø§ÛÙÚ©Ù ÙÙØ´ØªÙ ÙÙ Ø¯Ø± ÙÙØ±Ø¯ ÙÙÙ Ø§ÛÙ Ú©ÙØ§Ø³ÙØ§ ØµØ­ÛØ­ Ø¨Ø§Ø´ÙØ Ø§Ø² IDataReader Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ø±Ø¯Ù ØªØ§ Ø´ÙØ§ ÙØ± Ú©Ø¯ÙÙ Ø§Ø² Ø§ÛÙ Ú©ÙØ§Ø³ÙØ§ Ø±Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø§Ø²ÙÙ ÙØ´Ú©ÙÛ Ù¾ÛØ´ ÙÛØ§Ø¯.

----------


## ali_mp64

Ø³ÙØ§Ù Ø¯ÙØ³ØªØ§Ù .
ÚÙ Ú©Ø¯Û ÙÛ Ø´Ù ØªÙ #c ÙÙØ´Øª Ú©Ù Ø²ÙØ§ÙÛ Ú©Ù  cool disk Ø±Ù Ø¨Ù Ú©Ø§ÙÙ¾ÛÙØªØ± ÙØªØµÙ ÙÛ Ú©ÙÛÙ ÙØ­ØªÙØ§Û Ø§ÙÙÙ Ø±ÙÛ ÛÚ© Ø¢Ø¯Ø±Ø³ Ø§Ø² Ù¾ÛØ´ ØªØ¹ÛÛÙ Ø´Ø¯Ù Ú©Ù¾Û Ú©ÙÙ .

----------


## rostamedastan

Ø¢ÙØ§ ÙÚ©Ø§Øª Ø®ÙØ¨Û Ø±Ø§ Ú¯ÙØªÛØ¯ Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ø±Ø¯Ù ÙØ¨ÙØ§Ù Ø¨Ù Ø§ÛÙ ÙÚ©Ø§Øª Ø¨Ø±Ø®ÙØ±Ø¯Ù Ø¨ÙØ¯Ù ÙÙÛ Ø®ÙØ¨ ÙØªÙØ¬Ù ÙØ´Ø¯Ù Ø¨ÙØ¯Ù Ø´Ø¨Ù Ú©Ø¯ Ø´ÙØ§ Ø±Ø§ ÙÙ ÙÙØ´ØªÙ Ù Ø¨Ù Ú©Ø¯ ÙÙØ±Ø¯ ÙØ¸Ø± Ø¯Ø±Ø§ÙØ±Ø¯Ù Ù Ø¬ÙØ§Ø¨ Ø¯Ø§Ø¯ Ø®ÛÙÛ ÙÙÙÙÙ.

 Ø­Ø§ÙØ§ ÛÚ© ÙØ³Ø¦ÙÙ Ø¯ÛÚ¯Ø±Û ÙÙ ÙØ³Øª Ú©Ù Ø§Ú¯Ø± Ø¬ÙØ§Ø¨ Ø¨Ø¯ÛØ¯ ÙØ§ÙØ¹Ø§Ù ÙØ·Ù Ú©Ø±Ø¯ÛØ¯ ÙÙØªÛ Ø¨Ø®ÙØ§ÙÙ Ø¨Ø¨ÛÙÙ Ø±Ú©ÙØ±Ø¯ ØªØºÛÛØ± Ú©Ø±Ø¯Ù ÛØ§ ÙÙ Ù¾Ø³ Ø¨Ø§ÛØ¯ ÙÙØ¯Ø§Ø± ÙÛÙØ¯ timestamp Ø±Ø§ ÙÙ Ø¨Ø§Ø²ÛØ§Ø¨Û Ú©ÙÙ Ø¯Ø± Ø§ÛÙ ØµÙØ±Øª ÙÙØ¯Ø§Ø± Ø§ÛÙ ÙÛÙØ¯ Ø±Ø§  Ø¯Ø± Ø³Û Ø´Ø§Ø±Ù¾ Ø§Ø² ÚÙ ÙÙØ¹Û Ø¨Ø±Ø§Û Ø¯Ø±ÛØ§ÙØª ØªØ¹Ø±ÛÙ Ú©ÙÙ ØªØ§ Ø¨Ø¹Ø¯ Ø§Ø² Ø§ÛÙÚ©Ù Ø®ÙØ§Ø³ØªÙ storedprocedure ÙØ±Ø¨ÙØ· Ø¨Ù Ø­Ø°Ù ÛØ§  ÙÛØ±Ø§ÛØ´ Ø±Ø§ ØµØ¯Ø§Ø¨Ø²ÙÙ Ø¢Ù Ø±Ø§ Ø¨Ù Ø¹ÙÙØ§Ù Ù¾Ø§Ø±Ø§ÙØªØ± Ø¨ÙØ±Ø³ØªÙ ØªØ§ Ø¯Ø± Ø´Ø±Ø· Ø¨Ø§Ø² ÛØ§Ø¨Û Ø±Ú©ÙØ±Ø¯ Ø§Ø² Ø¢Ù ÙÙØ¯Ø§Ø± Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÙ Ø

----------


## mehdi.mousavi

> Ø¢ÙØ§ ÙÚ©Ø§Øª Ø®ÙØ¨Û Ø±Ø§ Ú¯ÙØªÛØ¯ Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ø±Ø¯Ù ÙØ¨ÙØ§Ù Ø¨Ù Ø§ÛÙ ÙÚ©Ø§Øª Ø¨Ø±Ø®ÙØ±Ø¯Ù Ø¨ÙØ¯Ù ÙÙÛ Ø®ÙØ¨ ÙØªÙØ¬Ù ÙØ´Ø¯Ù Ø¨ÙØ¯Ù Ø´Ø¨Ù Ú©Ø¯ Ø´ÙØ§ Ø±Ø§ ÙÙ ÙÙØ´ØªÙ Ù Ø¨Ù Ú©Ø¯ ÙÙØ±Ø¯ ÙØ¸Ø± Ø¯Ø±Ø§ÙØ±Ø¯Ù Ù Ø¬ÙØ§Ø¨ Ø¯Ø§Ø¯ Ø®ÛÙÛ ÙÙÙÙÙ.
> 
>  Ø­Ø§ÙØ§ ÛÚ© ÙØ³Ø¦ÙÙ Ø¯ÛÚ¯Ø±Û ÙÙ ÙØ³Øª Ú©Ù Ø§Ú¯Ø± Ø¬ÙØ§Ø¨ Ø¨Ø¯ÛØ¯ ÙØ§ÙØ¹Ø§Ù ÙØ·Ù Ú©Ø±Ø¯ÛØ¯ ÙÙØªÛ Ø¨Ø®ÙØ§ÙÙ Ø¨Ø¨ÛÙÙ Ø±Ú©ÙØ±Ø¯ ØªØºÛÛØ± Ú©Ø±Ø¯Ù ÛØ§ ÙÙ Ù¾Ø³ Ø¨Ø§ÛØ¯ ÙÙØ¯Ø§Ø± ÙÛÙØ¯ timestamp Ø±Ø§ ÙÙ Ø¨Ø§Ø²ÛØ§Ø¨Û Ú©ÙÙ Ø¯Ø± Ø§ÛÙ ØµÙØ±Øª ÙÙØ¯Ø§Ø± Ø§ÛÙ ÙÛÙØ¯ Ø±Ø§  Ø¯Ø± Ø³Û Ø´Ø§Ø±Ù¾ Ø§Ø² ÚÙ ÙÙØ¹Û Ø¨Ø±Ø§Û Ø¯Ø±ÛØ§ÙØª ØªØ¹Ø±ÛÙ Ú©ÙÙ ØªØ§ Ø¨Ø¹Ø¯ Ø§Ø² Ø§ÛÙÚ©Ù Ø®ÙØ§Ø³ØªÙ storedprocedure ÙØ±Ø¨ÙØ· Ø¨Ù Ø­Ø°Ù ÛØ§  ÙÛØ±Ø§ÛØ´ Ø±Ø§ ØµØ¯Ø§Ø¨Ø²ÙÙ Ø¢Ù Ø±Ø§ Ø¨Ù Ø¹ÙÙØ§Ù Ù¾Ø§Ø±Ø§ÙØªØ± Ø¨ÙØ±Ø³ØªÙ ØªØ§ Ø¯Ø± Ø´Ø±Ø· Ø¨Ø§Ø² ÛØ§Ø¨Û Ø±Ú©ÙØ±Ø¯ Ø§Ø² Ø¢Ù ÙÙØ¯Ø§Ø± Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÙ Ø


Data Type Ø§ÛÙ ÙÛÙØ¯ Ø¯Ø± C#â ÙØ¹Ø§Ø¯Ù Byte[]  ÙØ³ØªØ´. ÙÙØ· Ø¨Ø®Ø§Ø·Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ Ú©Ù ÙÙÚ¯Ø§Ù ÙÙØ§ÛØ³Ù  Ø¯Ø± Ú©Ø¯ (*Ø¯Ø± ØµÙØ±Øª ÙÛØ§Ø²*)Ø ÙÙÛØªÙÙÛØ¯ Ø¯Ù ØªØ§ Byte Array Ø±Ù Ø¨Ø§ == Operator ÙÙØ§ÛØ³Ù Ú©ÙÛØ¯. Ø´ÙØ§ Ø¯Ø± ÙØ§ÙØ¹ Ø¨Ø§ÛØ¯ Byte Ø¨Ù Byte Ø¯Ù Byte Array Ø±Ù Ø¨Ø§ ÙÙ ÙÙØ§ÛØ³Ù Ú©ÙÛØ¯. *(Ø¨Ø§Ø²ÙÙ ØªÚ©Ø±Ø§Ø± ÙÛÚ©ÙÙØ ÙÙØ· Ø¯Ø± ØµÙØ±Øª ÙÛØ§Ø²).

*ÙÙÙÙ Ø¨Ø§Ø´ÛØ¯.

----------


## *unos*

Ø¨Ø§ Ø³ÙØ§Ù Ø®Ø¯ÙØª Ø§Ø³ØªØ§Ø¯Ø§Ù 
Ø±Ø§ÙÙÙØ§ÛÛ Ø¨Ø±Ø§Û Ú©Ø§Ø± Ø¨Ø§ ÙØ±Ù Ø§ÙØ²Ø§Ø± netz packer  ÙÛ Ø®ÙØ§Ø³ØªÙ !
Ø§Ú¯Ù ÙÙØ±Ø§Ù Ø¨Ø§ ÙØ«Ø§Ù Ø¨Ø§Ø´Ù ÙÙÙÙÙ ÙÛØ´Ù

----------


## hassan razavi

ENVDTE Ø±Ø§ ÙÙ Ø¯Ø± ÙÙÛÙ ØªØ§ÙØ§Ø± Ø¬Ø³ØªØ¬Ù Ú©ÙÛØ¯

----------


## Ø±Ø§ÙØ¹Û ÙÙØ¯Û

Ø¨Ø§ Ø³ÙØ§Ù
ÙÙØ§ÙØ·ÙØ± Ú©Ù ÙÛ Ø¯Ø§ÙÛÙ Ø­Ø±Ú©Øª Ø¯Ø§Ø¯Ù ØªØµÙÛØ± Ø¯Ø± Client Area Ø±Ø§ Pan Ù  ØªØºÛÛØ± Scale Ø¢Ù Ø±Ø§ Zoom ÙÛ Ú¯ÙÛÙØ¯ Ú©Ù Ø§ÙØ¨ØªÙ Ø¨Ø±Ø§ Û Panning Ù Zooming Ø±ÙØ´ÙØ§Û ÙØªØ¹Ø¯Ø¯Û ÙÛØ² ÙØ¬ÙØ¯ Ø¯Ø§Ø±Ø¯.
Ø§ÙØ§ ÚÚ¯ÙÙÙ ÙÛ ØªÙØ§Ù ÛÚ© ÙØ¬ÙÙØ¹Ù Û Ú¯Ø±Ø§ÙÛÚ©Û ØªØ±Ø³ÛÙ Ø´Ø¯Ù Ø±ÙÛ Paint Canvas ÛØ§ ÛÚ© Panel Ø±Ø§ Ø¨Ø¯ÙÙ ÚØ´ÙÚ© Ø²Ø¯Ù ÛØ§ Ù¾Ø±Ø´ ØªØµÙÛØ± Pan ÛØ§ Zoom Ú©Ø±Ø¯Ø
Ø¨Ø§ ØªØ´Ú©Ø±

----------


## ali2000_1358

Ø¯ÙØ³ØªØ§Ù Ø§Ú¯Ø± ÙÙÚ©ÙÙ ÙØ·Ù Ú©ÙÛØ¯ ÛÚ© ÙÚ¯Ø§ÙÛ Ø¨Ù Ø§ÛÙ source ÙØ§ Ø¨ÙØ¯Ø§Ø²ÛØ¯

----------


## Ø¹ÙÛØ±Ø¶Ø§ ÙØ¯Ø§Ø­

Ø³ÙØ§Ù Ø
http://madebits.com/netz/
.NETZ help and usage examples
Ø¯Ø± Ø¶ÙÙ Ø®ÙØ§ÙØ¯Ù ÙØ·Ø§ÙØ¨ Ø¬ÙØ§Ø¨ Ø§ÛÙÙ¾Ø±Ø§ÛØ² ÙÛØ² Ø®Ø§ÙÛ Ø§Ø² ÙØ·Ù ÙÛØ³Øª :
https://barnamenevis.org/showthread.php?t=20560

----------


## e-shahshahani

ÙÙ ÛÙ Ø¨Ø±ÙØ§ÙÙ Ø¯Ø§Ø±Ù ÙÛÙÙÛØ³Ù Ú©Ù ØªÙØ´ ÙÛØ§Ø² ÙØ³Øª ÛÚ© Ú©Ø¯Û Ø¨Ù Ø²Ø¨Ø§Ù#C Ø§Ø² ÛÚ© ÙØ§ÛÙ Ø®ÙØ§ÙØ¯Ù Ø¨Ø´Ù Ù Ø¨Ø±ÙØ§ÙÙ Ø¢Ù Ø±Ø§ Ø§Ø¬Ø±Ø§ Ú©ÙØ¯. ØªØ§ Ø§ÛÙØ¬Ø§ Ø±Ø§ ØªÙØ§ÙØ³ØªÙ.
            CSharpCodeProvider codeProvider = new CSharpCodeProvider();

            ICodeCompiler compiler = codeProvider.CreateCompiler();
            CompilerParameters parameters = new CompilerParameters();
            parameters.GenerateExecutable = false;
            parameters.GenerateInMemory = true;
            parameters.OutputAssembly = "CS-Script-Tmp-Junk";
            parameters.MainClass = "CScript.Main";
            parameters.IncludeDebugInformation = false;

            foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
            {
                parameters.ReferencedAssemblies.Add(asm.Location);
            }
            parameters.ReferencedAssemblies.Add(Directory.GetC  urrentDirectory() + @"\source.dll");

            CompilerResults results = compiler.CompileAssemblyFromSource(parameters, textBox1.Text);

            if (results.Errors.Count > 0)
            {
                string errors = "Compilation failed:\n";
                foreach (CompilerError err in results.Errors)
                {
                    errors += err + "\n";
                }
                MessageBox.Show(errors, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            object o = results.CompiledAssembly.CreateInstance("CScript")  ;
            Type type = o.GetType();
            MethodInfo m = type.GetMethod("Main");
            m.Invoke(o, null);
            if (File.Exists("CS-Script-Tmp-Junk")) { File.Delete("CS-Script-Tmp-Junk"); }

Ø­Ø§ÙØ§ Ø³ÙØ§Ù Ø§ÛÙØ¬Ø§Ø³Øª Ú©Ù ÙÙ ÙÛØ®ÙØ§Ù Ø¯Ø± Ú©Ø¯Û Ú©Ù Ø¨ØµÙØ±Øª Ø¯Ø§ÛÙØ§ÙÛÚ© Ø¨Ø§ÛØ¯ Ø§Ø¬Ø±Ø§ Ø´ÙØ¯Ø Ø¨ØªÙØ§Ù Ø¨Ù Ø¢Ø¨Ø¬Ú©Øª ÙØ§Û Ø¨Ø±ÙØ§ÙÙ Ø¯Ø³ØªØ±Ø³Û Ø¯Ø§Ø´ØªØ ÙØ«ÙØ§ Ø¨ØªÙØ§Ù ÙØªÙ ÛÚ© ÙÛØ¨Ù Ø±Ø§ Ø¹ÙØ¶ Ú©Ø±Ø¯.

Ú©Ø³Û ÙÛØ¯ÙÙÙ ÚÙ Ø¬ÙØ±ÛØ

----------


## hamedgh

ØªÚ©ÙÛÚ© Ø¨Ø±Ø§Û ÚØ´ÙÚ© ÙØ²Ø¯Ù ØµÙØ­Ù ÙÙÙØ¹ Ø±Ø³Ù Ø¯Ø± ØµÙØ­Ù Ø±Ø§ ÙØ¨ÙØ§ Ø¯Ø± Ú©ØªØ§Ø¨ Ø§ÙØ§Û ÙØ§Ø´ÙÛØ§Ù Ø®ÙØ§ÙØ¯Ù Ø§ÙØ§Ù 
ÛØ§Ø¯Ù ÙÙÛ Ø§ÛØ¯
Ø§ÛÙ ÙÛÙÚ© Ø¯Ø§ÙÙÙØ¯ Ú©ØªØ§Ø¨http://hamedonline.qsh.es/ShowThread.aspx?ID=98
Ø§Ú¯Ø± Ø¨ÙÛÙ ÙØ·Ø§ÙØ¨Ø´ Ø±Ø§ Ø¨Ø®ÙØ§ÙÛ Ø´Ø§ÛØ¯ Ø¨ÛØ´ØªØ± Ø§Ø´ÙØ§ Ø¨Ø´ÙÛ !

----------


## e-shahshahani

Ø¨Ù Ø´Ø±Ø·Û Ú©Ù Ø´ÛØ·ÙÙÛ ÙÚ©ÙÛ ÙÛ ØªÙÙÛ Ø§Ø²Ø´ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛ!

private ManagementEventWatcher w;
private WqlEventQuery q;

private void Start()
{
	q = new WqlEventQuery();
	q.EventClassName = "__InstanceCreationEvent";
	q.WithinInterval = new TimeSpan(0, 0, 3);
	q.Condition = @"TargetInstance ISA 'Win32_USBControllerDevice'";

	ManagementScope scope = new ManagementScope("root\\CIMV2");
	scope.Options.EnablePrivileges = true; //sets required privilege

	w = new ManagementEventWatcher(scope, q);
	w.EventArrived += EventArrival;
	w.Start();

}

private void EventArrival(object sender, EventArrivedEventArgs e)
{
	try
	{
		DriveInfo[] drives = DriveInfo.GetDrives();
		for (int i = drives.Length - 1; i >= 0; i--)
		{
			if (drives[i].IsReady)
				if ((drives[i].DriveType == DriveType.Removable) || (drives[i].DriveType == DriveType.Ram))
				{
					// Ú©Ø¯ ÙÙØ±Ø¯ ÙØ¸Ø± ÙØ«ÙØ§ Ú©Ù¾Û Ú©Ø±Ø¯Ù ÙØ§ÛÙ ÙØ§
				
				}
		}
	}
	catch
	{

	}
}

----------


## mohamaddarbandi

> Ø´ÙØ§ Ø¯ÙÛÙØ§ Ø¨Ú¯Ø´ÛÙ ÙØ´Ú©ÙØªÙÙ ÚÛÙØ
> Ú©Ø´ÛØ¯Ù ÙÙØ§Ø´Û Ù Ø§ÛØ¬Ø§Ø¯ ÙØ¶Ø§ÛÛ ÙØ§ÙÙØ¯ Ø¨Ø±ÙØ§ÙÙ Paint Ø
> ÙØ±Ø³ØªØ§Ø¯Ù  ÙØ§ÛÙ ÙÙØ§Ø´Û Ø´Ø¯Ù Ø¨ÛÙ Ú©ÙØ§ÛÙØª ÙØ§Ø
> ÛØ§ ....


ÙØ± Ø¯Ù!
ÙØ´Ú©Ù Ú©Ø´ÛØ¯Ù ÙÙØ§Ø´Û Ø¨ÙØ¯ Ú©Ù ÙÙÙÙ ÙØ­Ø¸Ù ØªØ­Øª Ø´Ø¨Ú©Ù ÙØ´ÙÙ Ø¯Ø§Ø¯Ù Ø¨Ø´Ù.Ø§ÙØ§Ù ÙØ´Ú©Ù Ú©Ø´ÛØ¯Ù ÙÙØ§Ø´Û Ø­Ù Ø´Ø¯. ÙÛÙÙÙÙ Ø´Ø¨Ú©Ø´!

----------


## firefox2009

Ø¨Ø§ Ø³ÙØ§Ù 

ÙÙ ÛØ³Ø±Û Ú©Ø¯ ÙÛ Ø®ÙØ§Ù Ø¯Ø± ÙÙØ±Ø¯ Ú©ÙØªØ±Ù DataGridView . Ø¯Ø± ÙÙØ±Ø¯ Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² Ú©ÙØªØ±Ù OpenDialog ÙÛ Ø®ÙØ§ÙÙ ÛÙ ÙØ§ÛÙ text Ø±Ø§ Ø¨Ù Ø·ÙØ± ÙØ³ØªÙÛÙ ØªÙÛ Ø¨Ø±ÙØ§ÙÙ open Ú©ÙÙ .( Ø¨Ø±Ø§Û ÙØ«Ø§Ù Ø§Ú¯Ù ÙØ§ÛÙÙ Ø¨Ù ØµÙØ±Øª Ø³ØªÙÙÛ Ø¨Ø§Ø´Ø¯ ÙØ«ÙØ§ Ø³Ù ØªØ§ Ø³ØªÙÙ Ø§Ú¯Ù Ø¯Ú©ÙÙ open Ø±Ø§ Ú©ÙÛÚ© Ú©Ø±Ø¯Ù ÙØ³ØªÙÛÙ Ø³ØªÙÙ Ø§ÙÙ text Ø¯Ø± Ø³ØªÙÙ Ø§ÙÙ DataGridView Ù Ø³ØªÙÙ Ø¯ÙÙ Ø°Ø± Ø³ØªÙÙ Ø¯ÙÙ DataGridView ÙØ±Ø§Ø± Ú¯ÛØ±Ø¯ Ù Ø¨Ù ÙÙÛÙ ØªØ±ØªÛØ¨ ØªØ§ Ø§Ø®Ø± ). ØØØØØØØØØØ  :ÙØªÙÚ©Ø±: 
Ù ÙÙÙÛÙ Ø·ÙØ± save Ú©Ø±Ø¯Ù Ø§Ù Ø§Ø² Ø·Ø±ÛÙ saveDialog .ØØØØØØØ
Ø¨Ø¯ÙÙ Ø§Ø³ØªÙØ§Ø¯Ù Ø§Ø² Database


Ø¨Ø§ ØªØ´Ú©Ø± Ø²ÛØ§Ø¯ . :ÚØ´ÙÚ©:

----------


## Mrs.Net

ÛÚ© tooltip Ø¨Ø§ ÙØ§Ø¨ÙÛØª RightToLeft ÙÛØ®ÙØ§Ù
Ú©Ø³Û ÙÛØªÙÙÙ Ú©ÙÚ© Ú©ÙÙØ

----------


## Amir Oveisi

http://www.codeproject.com/KB/cpp/mi..._controls.aspx

----------


## angel_692

ÛÚ© Ø¨Ø§Ø± dataset Ø§Û Ú©Ù datagride Øª Ø±Ø§ Ù¾Ø± ÙÛ Ú©ÙÙ clear Ú©Ù Ø¨Ø¹Ø¯ Ø¯ÙØ¨Ø§Ø±Ù Ø¨Ø§ Fill Ù¾Ø± Ú©Ù . Ø­Ø§ÙØ§ datagrid Ø±Ù update Ú©Ù.

----------


## Mrs.Net

> http://www.codeproject.com/KB/cpp/mi..._controls.aspx


Ø´ÙØ§ Ø§ÛÙÙ Ø§ÙØªØ­Ø§Ù Ú©Ø±Ø¯ÛØ¯Ø
ÙÙ ÙÛØ®ÙØ§Ù Ø§Ø² Ø³ÙØª Ø±Ø§Ø³Øª Ø¨Ø§Ø² Ø¨Ø´Ù Ù Ø§Ø² Ø³ÙØª Ø±Ø§Ø³Øª Ø¨Ù ÚÙ¾ ÙØªÙ Ø§Ø¶Ø§ÙÙ Ø¨Ø´Ù.
Ø§ÛÙ ÙÛÙÚ©Û Ú©Ù Ø¯Ø§Ø¯ÛØ¯ ÙÛÚ ÙØ±ÙÛ Ø¨Ø§ Ø§ØµÙØ´ ÙØ¯Ø§Ø±Ù Ø§ÙÚ¯Ø§Ø±

----------


## behrouz_ahwazi

Ø¯Ø± ÙÙÚ¯Ø§Ù Ø§Ø¬Ø±Ø§Û Ø¨Ø±ÙØ§ÙÙ Ø¨Ø§ÙÚ© Ø§Ø·ÙØ§Ø¹Ø§ØªÛ Ø§Ø² ÙØªØ¯ fill ÙÙÚÛÙ errorÛ ÙÛ Ú¯ÛØ±Ù
Login failed for user 'sa'. The user is not associated with a trusted SQL Server connection

----------


## hassan razavi

ÛØ§ Password Ú©Ø§Ø±Ø¨Ø± Sa Ø¯Ø± ConnectioString ØªÙÙ Ø§Ø´ØªØ¨Ø§Ù ÙØ³Øª Ù ÛØ§ Ú©Ø§Ø±Ø¨Ø± sa Ø¨Ù Ø¨Ø§ÙÚ© ÙÙØ±Ø¯ ÙØ¸Ø± Ø§Ø¬Ø§Ø²Ù Ø¯Ø³ØªØ±Ø³Û ÙØ¯Ø§Ø±Ø¯.

----------


## combo_ci

ÙÙÙÙÙ Ø§Ø² ÙØ·Ù Ø´ÙØ§ Ø§ÙØ§ Ø§ÛÙ Ú©Ø¯ ÙØ±Ù ÙØ§Û Ø§Ø±Ø« Ø¨Ø±Ø¯Ù Ø´Ø¯Ù Ø±Ù Ø¨Ø±ÙÙÛÚ¯Ø±Ø¯ÙÙÙ...ÙÛØ´Ù Ø±Ø§ÙÙÙØ§ÛÛÙ Ú©ÙÛÙ

----------


## Ø¹ÙÛØ±Ø¶Ø§ ÙØ¯Ø§Ø­

Ø³ÙØ§Ù Ø
ÙÙÚÙÛÙ Ø¨Ø§ÛØ¯ Ø¯ÙØª Ú©ÙÛØ¯ Ú©Ù SQL Server Authentication Mode Ø¨Ø± Ø±ÙÛ Mixed Mode ØªÙØ¸ÛÙ Ø´Ø¯Ù Ø¨Ø§Ø´Ø¯ Ø ÙÙÚÙÛÙ Ø¨Ù sa ÛÚ© Ù¾Ø³ÙØ±Ø¯ Ø§Ø®ØªØµØ§Øµ Ø¯ÙÛØ¯ Ù Ø³Ø¹Û Ú©ÙÛØ¯ Ø­ØªÛ Ø§ÙØ§ÙÚ©Ø§Ù Ø§Ø² sa Ø¨Ø±Ø§Û Ø¨Ø±ÙØ±Ø§Ø±Û Ø§Ø±ØªØ¨Ø§Ø· Ù Ú©Ø§Ø± Ø¨Ø§ Ø¯ÛØªØ§Ø¨ÛØ³ Ø§Ø³ØªÙØ§Ø¯Ù ÙÚ©ÙÛØ¯. ÙÙÚÙÛÙ Ø¯ÙØª Ú©ÙÛØ¯ Ú©Ù sa ÙØ¹Ø§Ù Ø´Ø¯Ù Ø¨Ø§Ø´Ø¯ Ø Ø§Ú¯Ø± Ø§ÛÙØ·ÙØ± ÙÛØ³Øª Ø§Ø² Ø·Ø±ÛÙ Ø§Ø¬Ø±Ø§Û Ú©Ø¯ T-SQL Ø²ÛØ± Ø¢ÙØ±Ø§ Enable ÙÙØ§ÛÛØ¯ :

Alter login sa enable

Ø¨Ø±Ø§Û Ø§Ø¹ÙØ§Ù ØªØºÛÛØ±Ø§Øª ÙÙÙ ÙÙ ÙÛØªÙØ§ÙÛØ¯ Ø§Ø² Local Administrator Login Ø§Ø³ØªÙØ§Ø¯Ù ÙÙØ§ÛÛØ¯.

----------


## bachebahal_1363

Ø§Ø² ÙÙÙ Ø¯ÙØ³ØªØ§Ù Ú©Ù Ø¨Ù ÙÙ Ú©ÙÚ© Ú©Ø±Ø¯ÙØ¯ ØªØ´Ú©Ø± ÙÛ Ú©ÙÙ 
ÙØ´Ú©ÙÙ Ø­Ù Ø´Ø¯

----------


## Ø¹ÙÛØ±Ø¶Ø§ ÙØ¯Ø§Ø­

Ø³ÙØ§Ù Ø
Ø§Ø² Ú©Ø¯ Ø²ÛØ± Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯ :

            Type[] types = Assembly.GetExecutingAssembly().GetTypes();
            
            foreach (Type type in types)
            {
                Type baseType = type.BaseType;
                string name = type.Name;
                while (baseType != null)
                {
                    if (baseType.Equals(typeof(Form)))
                    {
                        listBox1.Items.Add(name);
                        break;
                    }
                    baseType = baseType.BaseType;
                } 
            }

----------


## Ø±Ø§ÙØ¹Û ÙÙØ¯Û

Ø±Ø§Ø³ØªØ´ ÙØ¨ÙØ§ Ø§ÛÙ Ú©ØªØ§Ø¨ Ø±Ù Ø®ÙÙØ¯Ù Ø§ÙÙØ¬Ø§ ÙÙØ´ØªÙ Ø´Ø¯Ù:
"... Ø¯Ù ØªÚ©ÙÛÚ©Û Ú©Ù Ø¨Ø±Ø§Û Ø¨ÙØ¨ÙØ¯ Ø¨Ø±ÙØ§ÙÙ Ø¯Ø± Ø§ÛÙ ÙØ³ÙØª Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ø±Ø¯ÛÙ ( Ø±Ø³Ù ÙØ§Ø­ÛÙ Ø§Û Ú©Ù ÙØ§Ø²Ù Ø§Ø³Øª ØªØ±Ø³ÛÙ Ø´ÙØ¯ Ø¨Ù Ø¬Ø§Û Ø±Ø³Ù ØªÙØ§Ù ÙØ±Ù Ù ÙÛØ² Ø±Ø³Ù ÙÙØ·Ù Ø§Û Ú©Ù Ø¬Ø¯ÛØ¯Ø§Ù Ø§ÛØ¬Ø§Ø¯ Ø´Ø¯Ù Ø§Ø³Øª Ø¨Ù Ø¬Ø§Û Ø±Ø³Ù ØªÙØ§Ù ÙÙØ§Ø·) Ø¯Ù ÙÚ©ØªÙ Û Ø¨Ø³ÛØ§Ø± ÙÙÙ Ø¯Ø± ÙÙØ´ØªÙ ÛÚ© Ø¨Ø±ÙØ§ÙÙ Û Ú¯Ø±Ø§ÙÛÚ©Û ÙØ­Ø³ÙØ¨ ÙÛ Ø´ÙÙØ¯..." Â« Ø¨Ù ÙÙÙ Ø§Ø² Ú©ØªØ§Ø¨ Ø¢ÙØ§Û ÙØ§Ø´ÙÛØ§Ù - ÙØµÙ ÚÙØ§Ø±Ø¯ÙÙ - ØµÙØ­Ù 549 Â»
ÙÙÛ ÙØ³Ø¦ÙÙ Û ÙÙ ÙØ³Ø¦ÙÙ Ø§ÛØ³Øª Ú©Ù Ø¯Ø± Ø¢Ù Ø¨Ø§ÛØ¯ ØªÙØ§Ù ØµÙØ­Ù Ù ÙÙÙ Û ÙÙØ§Ø· refresh Ø´ÙÙØ¯. Ø¢ÛØ§ Ø¨Ø±Ø§Û Pan ÛØ§ zoom Ø§ÙÚ©Ø§Ù Ø¯Ø§Ø±Ø¯ ØºÛØ± Ø§Ø² Ø§ÛÙ ÙÙ Ø¨Ø§Ø´Ø¯Ø

----------


## Ø±Ø¶Ø§ Ø¹Ø±Ø¨ÙÙ

Ø®ÙØ¨Ø Ø¯Ø± Ø¢Ù ÙØªØ¯Û Ú©Ù Ø¨ØµÙØ±Øª Ø¯ÛÙØ§ÙÛÚ© Invoke ÙÛ Ú©ÙÛ Ú©ÙØªØ±Ù ÙÙØ±Ø¯ ÙØ¸Ø±Øª Ø±Ø§ Ø¨Ø¹ Ø¹ÙÙØ§Ù Ù¾Ø§Ø±Ø§ÙØªØ± Ø¨ÙØ±Ø³Øª.

----------


## faryad_154

:ÙØ¨Ø®ÙØ¯: ÚÙØ¯ validation Ø¯Ø§Ø±ÛÙ ÙÛ Ø®ÙØ§ÙÛÙ ÛÚ© Ù¾ÛØºØ§Ù Ø¯Ø± validationsummary ÚØ§Ù¾ Ø´ÙØ¯ ÙÙ ÚÙØ¯ Ù¾ÛØºØ§Ù ÙØ·ÙØ§ ÙØ±Ø§ Ø±Ø§ÙÙÙØ§ÛÛ Ú©ÙÛØ¯.

----------


## rostamedastan

Ø¢ÙØ§ ÙÙ ÛÚ© ÙØªØºÛØ± Ø¨Ø§ ÙØ§Ù  change Ø¨Ù ØµÙØ±Øª Byte[] change  ØªØ¹Ø±ÛÙ Ú©Ø±Ø¯Ù Ø­Ø§ÙØ§ Ú©Ù ÙÛ Ø®ÙØ§ÙÙ ÙÙØ¯Ø§Ø± ÙÛÙØ¯ timestamp Ø±Ù Ú©Ù ÙØ§Ù ÙÛÙØ¯ Ø¢Ù ÙÙ change Ø§Ø³Øª Ø±Ø§ Ø¨Ù ØµÙØ±Øª change=(ds.Tables["parvandeh"].Rows[0]["change"]) Ø¨Ú¯ÛØ±Ù ÙÙÛ Ø´ÙØ¯ ÙÛ Ø´Ù Ø±Ø§ÙÙÙØ§ÛÛ Ú©ÙÛØ¯ Ú©Ù Ø§Ø´Ú©Ø§Ù Ø§Ø² Ú©Ø¬Ø§Ø³ØªØ

----------


## ÙÙØ¯Û Ø±Ø­ÛÙ Ø²Ø§Ø¯Ù

Ø³ÙØ§Ù Ø¯ÙØ³ØªØ§Ù Ø¹Ø²ÛØ² 
Ø§Ú¯Ø± Ú©Ø³Û ÙÙØ§ÙÙ Ø§Û Ø¯Ø± ÙÙØ±Ø¯ Ø¨Ø±ÙØ§Ù ÙÙÛØ³Û Ø´Ø¨Ú©Ù ÙØ¯Ù 5 ÙØ§ÛÙ Ø³Ø±Ø§Øº Ø¯Ø§Ø±Ù Ú©Ù ÙØ§Ø±Ø³Û Ø¨Ø§Ø´Ù Ø¨Ø±Ø§Ù ÙÛÙÚ©Ø´Ù Ø§ÛÙØ¬Ø§ Ø¨Ø²Ø§Ø±Ù Ú©ÙÚ© Ø®ÛÙÛ Ø¨Ø²Ø±Ú¯Û Ø¨Ù ÙÙ Ú©Ø±Ø¯Ù .

----------


## armiya

ÙÙÙÙÙ Ø§Ø² Ø±Ø§ÙÙÙØ§ ÛÛ ØªÙÙ Ø§ÙÛØ¯ ÙØ§Ø±Ù Ú©Ù Ø§ÙØ´Ø¨ ÙØ´Ú©ÙÙ Ø­ÙØ´Ù Ø¨Ù ÙØ± Ø­Ø§Ù ÙØ±Ø³Û 
---------------------------------------------------------------------------------------
Ø¨Ø± Ø±ÙÛ ÙØ± Ù¾ÙÙ Ø§Û Ú©Ù Ø¨Ø§Ø´Û Ø®Ø¯Ø§ ÛÚ© Ù¾ÙÙ Ø§Ø² ØªÙ Ø¨Ø§ÙØ§ØªØ± Ø§Ø³Øª ÙÙ ÙÙØ· Ø¨Ø± Ø§Û Ø§ÛÙÚ©Ù Ø®Ø¯Ø§Ø³Øª Ø¨Ø±Ø§Û Ø§ÛÙÚ©Ù Ø¯Ø³ØªØª Ø±Ø§ Ø¨Ú¯ÛØ±Ø¯

ÙØ«ÙØ§ ÙØ§Ù Ø±Ø§ Ø¹ÙÛ ÙØ§Ù Ø®Ø§ÙÙØ§Ø¯Ú¯Û Ø§Ú©Ø¨Ø±Û Ù...............

----------


## Ø¹ÙÛØ±Ø¶Ø§ ÙØ¯Ø§Ø­

Ø¨Ø§ÛØ¯ Ø¨Ù Ø§ÛÙØµÙØ±Øª Ø¹ÙÙ Ú©ÙÛØ¯ :

byte[] timeStampBytes = (byte[])ds.Tables[0].Rows[0]["timestampColumn"];

----------


## Ø¹ÙÛØ±Ø¶Ø§ ÙØ¯Ø§Ø­

Ø³ÙØ§Ù Ø
http://www.developercenter.ir/Forum/...ead.php?t=1803
https://barnamenevis.org/showthread.php?t=68417

----------


## bachebahal_1363

اگر امکان داره  دوستانی که در مورد برنامه نویسی جهت Office که در درون Ms Visual Stodio 2008 قرارداده شده اطلاعاتی دارند یک تاپیک جهت آموزش این مورد نیز در سایت راه اندازی کنند .

----------


## rostamedastan

دست شما درد نکنه جواب داد
فقط بعد از اجرای شیئ از نوع sql command که storedprocedure را  فراخوانی می کند که یک رکورد را حذف می کند دستورات
 dr = cmdclas.ExecuteReader(); 
 textBox1.Text = (dr.RecordsAffected).ToString();

را می نویسم در textbox1 عدد صفر را می نویسد در صورتیکه چون یک رکورد تغییر پیدا کرده باید عدد 1 نوشته شود چه کار کنم؟
البته بعد از عمل Update عدد 1 را بر می گرداند ولی اگر رکوردی را حذف کنم 0 بر می گرداند.

----------


## shahinghorbani

من مشکلی که دارم اینه که ایبوک انگلیسی زیاد دارم اما تقریبا هیچ کدام از آن ها رابط های گرافیکی C#‎  را توضیح ندادند و کد نویسی را گفتند اگر دوستان کتاب فارسی (که نیست) یا انگلیسی سراغ داره که رابط های گرافیکی را توضیح داده باشه خیلی ممنون میشم. منظورم ابزارهای اماده ای است که برای ارتباط با دیتابیس ساختن فایلهای xml و ..  وجود داره . در ضمن اگر برای C#‎ 2005 باشه که عالیه

----------


## gdevnb

OReilly NET WINDOWS FORMS IN A NUTSHELL

----------


## e-shahshahani

> خوب، در آن متدی که بصورت دینامیک Invoke می کنی کنترل مورد نظرت را بع عنوان پارامتر بفرست.


اگر یک مثالی که کار میکنه معرفی کنید ممنون میشم. چون چنین کاری کردم و به خطا خوردم.
تشکر

----------


## hdv212

> حالا سوال اینجاست که من میخوام در کدی که بصورت داینامیک باید اجرا شود، بتوان به آبجکت های برنامه دسترسی داشت، مثلا بتوان متن یک لیبل را عوض کرد


سوالت رو درست متوجه نشدم، اگه میخوای در کدی که به صورت داینامیک ایجاد کردی، خاصیت Text مربوط به Label ات رو عوض کنی، میتونی به شیوه ی زیر استفاده کنی :
// create private field
CodeMemberField field1 = new CodeMemberField(typeof(System.Windows.Forms.Label)  , "label1");
field1.Attributes = MemberAttributes.Private;
ctd.Members.Add(field1); // ctd is a CodeTypeDeclaration object

// assign value to label1.Text
CodeAssignStatement fieldAssignment = new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "label1.Text"), new CodePrimitiveExpression("This is a sample message value"));
constructor1.Statements.Add(fieldAssignment); // constructor1 is a CodeConstructor object

یادت باشه که آبجکت fieldAssignment رو به Statements یکی از متدهایی که در RunTime میسازی اضافه کنی، من در اینجا به constructor1 که یک آبجکت CodeConstructor هست اضافه کردم.

----------


## razavi_university

سوال اول و سومت تکراری است با *جستجو* به جواب می‌رسید.
برای برنامه نویسی تحت وب ماکروسافت ASP.Net رو ارائه کرده که با هردو زبان VB و  #C میتوان کار کرد. 
بهتره این مقاله رو هم بخونی
*مقاله: برنامه نویسی ++C/C از نوع Native یا managed ؟*

----------


## alirzn

آقا من source رو که می خوام debug کنم از دستور FILL مشکل میگیره؟تو این source مشکل فارسی شدن حل شده؟



> آقا دستت درد نکنه . ببخشید که sourceدیر گذاشتم ممنون میشم یک نگاه بندازی

----------

