سوکت نویسی در vb6
ویژوال بیسیک در یک نگاه
Making DecisionsDim count As Integer = 10' simple 1 line if then elseDim oneHand As Boolean = IIf(count <= 5, True, False)If count <= 5 Then oneHand = True Else oneHand = False' multiple conditionsIf count = 0 ThenConsole.WriteLine("Zero")ElseIf count > 0 And count < 6 ThenConsole.WriteLine("Count on one hand.")ElseIf count >= 6 And count <= 10 ThenConsole.WriteLine("Count on two hands.")ElseConsole.WriteLine("Not enough fi ngers.")End If
فیلتر کردن DataGridView با LinQ
VB Dim orders As DataTable = dataSet.Tables("SalesOrderDetail")Dim query = _ From order In orders.AsEnumerable() _ Where order.Field(Of Int16)("OrderQty") > 2 And _ order.Field(Of Int16)("OrderQty") < 6 _ Select orderDim view As DataView = query.AsDataView()bindingSource1.DataSource = view فیلتر اطلاعات DataTable بر اساس DateTime و ایجاد DataView C#DataTable orders = dataSet.Tables["SalesOrderHeader"];EnumerableRowCollection query = from order in orders.AsEnumerable() where order.Field("OrderDate") > newDateTime(2002, 6, 1) select order;DataView view = query.AsDataView();bindingSource1.DataSource = view;VBDim orders As DataTable = dataSet.Tables("SalesOrderHeader")Dim query = _ FromorderIn orders.AsEnumerable() _ Whereorder.Field(Of DateTime)("OrderDate") > New DateTime(2002, 6, 1) _ SelectorderDim view As DataView = query.AsDataView()bindingSource1.DataSource = view فیلتر و نمایش داده ها بر اساس کار کتر شروع کلمه DataView و نمایش در dataGridView C# DataTable contacts = dataSet.Tables["Contact"]; EnumerableRowCollection query = from contact in contacts.AsEnumerable() where contact.Field<string>("LastName").StartsWith("S") orderby contact.Field<string>("LastName"), contact.Field<string>("FirstName") select contact; DataView view = query.AsDataView(); bindingSource1.DataSource = view; dataGridView1.AutoResizeColumns();
آشنايي با Namespace در زبان C#
آشنايي با Namespaceüدر زبان C# چگونگي استفاده از هدايتگر using (using directive)ü چگونگيüاستفاده از هدايتگر alias (alias directive) اعضاي يك Namespace چه هستند؟ü اگر به خاطر داشته باشيد، در درس اول، در ابتداي برنامه از using System; استفاده نموديم. با استفاده از اين كد، امكان دسترسي ما به اعضاي Namespace موردنظر، كه در اينجه System است، فراهم ميشد. پس از مطالعه اين درس، مطالب بسياريدرباره هدايتگر using فرا خواهيد گرفت. Namespace ها، المانهاي زبان C# هستند كه شما را در سازماندهي كردن برنامه، كمك ميكنند. پيادهسازي Namespace هادر كد برنامه بسيار مفيد است چراكه از ايجاد مشكلات مربوط به استفاده مجدد كد،پيشگيري مينمايد. چگونگي ايجاد Namespace به مثال زير توجه نماييد. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> كد:
رخدادها و delegate ها در C#
ساخت نمونههاي جديد از يك delegate آخرين كاري كهبايد انجام دهيد، ايجاد نمونههاي جديد از delegate ساخته شده است. يك نمونة جديداز يك delegate، تنها انتزاعي از يك متد است كه با نامگذاري آن متد ايجاد ميشود. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> كد: class Clock { ⋮ public void RefreshTime(int hours, int minutes, int seconds) { ⋮ } ⋮ }با توجه به ساختار Tick، ملاحظه مينماييد كه متد RefreshTime كاملاً با اين delegate همخواني دارد : كد: delegate void Tick(int hours, int minutes, int seconds);و اين بدين معناست كه ميتوان نمونةجديد از Tick ايجاد كرد كه انتزاعي از فراخواني RefreshTime در شيء خاصي از Clock است. كد: Clock wall = new Clock(); ⋮ Tick m = new Tick(wall.RefreshTime);حال كه m، ايجاد شد، ميتوانيد از آن بصورت زيراستفاده نماييد : كد: m(12, 29, 59);اين دستور در حقيقت كار دستور زير را انجام ميدهد (چون m دقيقاً انتزاع آن است) : كد: wall.RefreshTime(12, 29, 59);همچنين ميتوانيد m را بعنوان پارامتر به متدي ارسالنماييد. حال تمام چيزهايي را كه براي حل مسئله با استفاده از delegate بدانها نيازداشتيم را بررسي كرديم. در زير مثالي را مشاهده ميكنيد كه كلاسهاي Ticker و Clock را به يكديگر مرتبط نموده است. در اين مثال از واسط استفاده نشده و متد RefreshTime، متدي private است : كد: delegate void Tick(int hours, int minutes, int seconds); ⋮ class Clock { ⋮ public void Start() { ticking.Attach(new Tick(this.RefreshTime)); } public void Stop() { ticking.Detach(new Tick(this.RefreshTime)); } private void RefreshTime(int hours, int minutes, int seconds) { Console.WriteLine("{0}:{1}:{2}", hours, minutes, seconds); } private Ticker ticking = new Ticker(); }با اندكي تامل و صرف وقت ميتوانيد delegate رابطور كامل درك نماييد. رخدادها (Events) در برنامههاي Console ،برنامه منتظر ورود اطلاعات يا دستوراتي از سوي كاربر ميماند و با استفاده از ايناطلاعات كار مورد نظر را انجام ميدهند. اين روش برقراري ارتباط با كاربر، روشيناپايدار و غير قابل انعطاف است. در مقابل برنامههاي Console، برنامههاي مدرنوجود دارند كه با استفاده از GUI با كاربر در ارتباطند و بر پايه رخدادها بناشدهاند (Event-Based)، بدين معنا كه رخدادي (منظور از رخداد اتفاقي است كه درسيستم يا محيط برنامه صورت ميگيرد.) در سيستم روي ميدهد و بر اساس اين رخداد عمليدر سيستم انجام ميشود. در برنامههاي تحت ويندوز، نيازي به استفاده از حلقههايمتعدد جهت منتظر ماندن براي ورودي از كاربر نيست، بلكه با استفاده از رخدادها،تراكنش بين سيستم و كاربر كنترل ميشود. يك event در زبان C#، عضوي از كلاساست، كه در صورت بروز رخداد خاصي، فعال ميشود و عملي را انجام ميدهد. معمولاًبراي فعال شده event از دو عبارت fires و raised استفاده ...
اجرای دستورات Linq از بیس string
The post uses a LINQ to SQL entity model for the NorthWind database in VS 2008, We create an instance of this model like so:NorthwindDataContext context = new NorthwindDataContext();I normally would write a query to return all customers ordered by the ContactName in descending order like so:var x = context .Customers .OrderByDescending(c => c.ContactName);If instead, I wanted to define the Sort column and Sort direction in a string, I could rewrite the query, with the help of the Dynamic Expression API, like so:string sortExpression = "ContactName DESC";var x1 = context .Customers .OrderBy(sortExpression);The SQL generated in both cases will beSELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle],[t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]FROM [dbo].[Customers] AS [t0] 4: ORDER BY [t0].[ContactName] DESCMoving on to another example, If I had a query like so,DateTime myDate = Convert.ToDateTime("7/26/1996");var y = context .Orders .Where(a => (a.Customer.Country == "Switzerland") && (a.OrderDate < myDate)) .OrderBy(o=> o.OrderDate) .Select(o => new { o.Customer.ContactName, o.Customer.Country, o.OrderDate });I could use the Dynamic Expression API to rewrite it like this:var y1 = context .Orders .Where("Customer.Country == @0 and OrderDate < @1","Switzerland", myDate) .OrderBy("OrderDate") .Select("new(Customer.ContactName,Customer.Country, OrderDate)");Note that, in the query above, the shape of the result is specified as a string. Note also that I have defined what are known as substitution values in the Where statement. The SQL generated in both cases would be:exec sp_executesql N'SELECT [t1].[ContactName], [t1].[Country], [t0].[OrderDate] FROM [dbo].[Orders] AS [t0]LEFT OUTER JOIN [dbo].[Customers] AS [t1] ON [t1].[CustomerID] = [t0].[CustomerID]WHERE ([t1].[Country] = @p0) AND ([t0].[OrderDate] < @p1)ORDER BY [t0].[OrderDate]' 6: N'@p0 nvarchar(11),@p1 datetime'@p0=N'Switzerland',@p1='1996-07-26 00:00:00:000'To use the Dynamic Expression API, add the Dynamic.cs class to your project and import the System.Linq.Dynamic namespace. To learn more, download the LINQ and language samples for Visual Studio 2008 Beta 2 zip file located at the Visual Studio 2008 samples page
چاپ متن توسط شی پرينتر vb6
مقدمه شی پرينتر ، شیي است که پرينتر پيش فرض سيستم را کنترل می کند . استفاده از شی پرينتر در ويژوال بيسيک 6 مانند کار با ساير اشيا است و بايستی از خواص و متدهای آن استفاده کرد . در ادامه با برخی از اين خواص و متدها آشنا خواهيد شد . چاپ متن توسط شی پرينتربرای چاپ متن توسط شی پرينتر کافيست خواص CurrentX و CurrentY که محل قرار گرفتن کرسر می باشد را تنظيم نوده و سپس با استفاده از متد Print متن مورد نظر را چاپ نموده و در پايان با استفاده از متد EndDoc صفحه چاپی را از پرينتر بيرون بدهيم . مثال : Printer.CurrentX=150Printer.CurrentY=200Printer.Print "Visual Basic Printer Object Test"Printer.EndDoc در مثال فوق فرض شده که ScaleMode برابر Pixel قرار داده شده است . توجه داشته باشيد که تا قبل از اجرای متد EndDoc عمل چاپ انجام نمی شود و فقط بعد از اين متد است که چاپ انجام شده و کاغذ بيرون می آيد . اگر پس از يک دستور Print ، دستور Print ديگری را استفاده کنيم متن روی خط بعدی چاپ خواهد شد . اگر بخواهيم متن بلافاصله بعد از متن اول چاپ شود بايد بعد از دستور Print اول از علامت ; استفاده کنيم . نکته : برای کنترل دقيق محل چاپ از CurrentX و CurrentY استفاده نمائيد . چاپ گرافيک توسط شی پرينتر به 4 روش می توان اشکال گرافيکی را توسط شی پرينتر چاپ کنيد :1 – چاپ دايره : با استفاده از متد Circle می توان يک دايره ، قوس و يا بيضی را در صفحه چاپ کرد . فرمت کلی اين متد بصورت زير است : Circle (x,y),radius,[color],[start],[end],[aspect] که x و y مختصات مرکز دايره و radius شعاع آن می باشد .پارامترهای color ، start ، end و aspect اختياری هستند و بترتيب رنگ ، محل شروع قوس ، محل خاتمه قوس و نسبت شعاع بيضی را نشان می دهند . 2 – چاپ خط : با استفاده از متد Line می توان يک خط و مستطيل را در صفحه چاپ کرد . فرمت کلی اين متد بصورت زير است : Line (x1,y1)-(x2,y2),[color],[B[F]] که x1 و y1 مختصات شروع خط ( يا مستطيل ) و x2 و y2 مختصات انتهای خط ( يا مستطيل ) هستند .پارامتر color اختياری بوده و رنگ خط ( يا مستتطيل ) را نشان می دهد .پارامتر B اختياری بوده و نشان می دهد يک مستيل رسم شود .پارامتر F اختياری بوده و بهمراه B می آيد و نشان می دهد يک مستطيل توپر رسم شود . 3 – چاپ نقطه : با استفاده از متد PSet می توان نقطه ای روی صفحه چاپ کرد و فرمت کلی آن بصورت زير است : PSet (x,y),[color] که x و y مختصات نقطه می باشند .پارامتر color اختياری بوده و رنگ نقطه را نشان می دهد . 4 – چاپ تصوير : با استفاده از متد PaintPicture می توان محتويات يک فايل گرافيکی را چاپ کرد . فرمت کلی اين متد بصورت زير است : Printer.PaintPicture picture, x1, y1, [width1], [height1], [x2], [y2], [width2], [height2], [opcode] x1 و y1 مختصات قرارگرفتن تصوير در صفحه بوده و picture يک شی از کلاس IPictureDisp است . اين شی را می توان از يک PictureBox يا از خاصيت Picture فرم ...
نواع شمارشي enum در C#
انواع شمارشي در C# درك و فهم يك نوع شمارشي يا يك enum ساخت يك نوع شمارشيجديد چگونگي استفاده از انواع شمارشي آشنايي با متدهاي مختلف موجود در System.Enum enmu فرم خاصي از انواع مقداري (Value Type) است كه از System.Enum مشتق شده و امكان پيمايش درون مجموعهاي مشخص را با استفاد از اعدادصحصيح براي ما فراهم مينمايد. با استفاده از enum ميتوان مجموعهاي از مقاديرثابت را تعريف نمود كه اين مقادير ثابت با استفاده از يك عدد صحيح قابل دسترسيهستند. استفاده از enum در برنامهها باعث بالا رفتن خوانايي برنامهميشود، چراكه با استفاده از آنها ميتوان با مجموعهاي از اعداد صحيح ترتيبي (Sequential) ، با عناويني تعريف شده، كار كرد. براي مثال، در اعلان يك enum، مامجموعهاي از نامهاي مورد نظر را تعريف مينماييم و در برنامه ميتوانيم از ايننامها بصورت ترتيبي استفاده نماييم. Enum به هر يك از عناصر موجود در اين مجموعهعددي را تخصيص ميدهد كه شروع اين عدد ميتواند توسط برنامهنويس نيز معين گردد. سپس با استفاده از نام عناصر موجود در enum و يا با استفاده از اعدادي كه به هر يكاز اين عناصر تخصيص داده شده، ميتوان enum را پيمايش نمود و به عناصر آن دسترسيداشت. همانطور كه گفته شد، enum يك نوع مقداري (Value Type) است، از اينروارثبري در مورد آن معنايي ندارد. مساوي قرار دادن دو enum نيز، مقادير يكي را درديگري كپي ميكند. همانطور كه در اين درس، و در منابع ديگر، خواهيد يافت، دسترسي بهانواع شمارشي در C# با استفاده از دو كلمه enum و Enum امكان پذير است. در C# نوعشمارشي enum از نوع BCL خود يعني Enum ارثبري ميكند ! با استفاده از enum يك نوعشمارشي جديد توليد ميشود و با استفاده از Enum، ميتوان به پيادهسازي متدهاياستاتيك انواع شمارشي پرداخت. ايجاد يك نوع شمارشي .Net Framework BCL حاويenum ها و مثالهاي متعددي از استفادة آنها ميباشد. براي مثال هرگاه كه از MessageBox بر روي فرمي استفاده ميشود، ميتوان از MessageBoxIcon كه يك نوعشمارشي است استفاده نمود. علاوه بر انواع شمارشي تعريف شده و موجود در .Net Framework، زمانهايي نيز وجود دارند كه ميخواهيم مجموعهاي از عناصر را تعريف كردهو از آنها استفاده نماييم. براي دسترسي به عناصري از نوع صحيح، استفاده از enum باعث خوانا شدن برنامه ميگردد. نحوه اعلان يك enum در حالت كلي بصورت زير است : كد: enum { // Enumeration list { در مثال 1-17 كه در زير ملاحظه ميكنيد، نحوهاعلان و استفاده از enum مشخص شده است. مثال 1-17 : نحوه اعلان يك enum كد: using System; // declares the enum public enum Volume { Low, Medium, High } // demonstrates how to use the enum class ...
آشنايي با كلاسها در C#
– آشناييبا كلاسها در C# در اين درس با كلاسها در زبان C# آشنا خواهيد شد. اهدافاين درس به شرح زير ميباشند : پيادهسازي سازندهها (Constructors)ü üدرك تفاوت بين اعضاي نمونه (Instance) و استاتيك (Static) آشنايي با تخريبüكنندهها (Destructors) آشنايي با اعضاي كلاسهاü يك كلاس با استفاده از كلمه كليدي class كه بدنبال آن نام كلاسآمده باشد، اعلان ميگردد و اعضاي اين كلاس درون {} اعلان ميگردند. هر كلاس دارايسازندهاي ميباشد كه در هربار ايجاد نمونهاي جديد از آن كلاس، بصورت خودكارفراخواني ميگردد. هدف از سازنده، تخصيصدهي اعضاي كلاس در زمان ايجاد نمونهايجديد از كلاس است. سازندهها داراي مقادير بازگشتي نبوده و همواره نامي مشابه نامكلاس دارند. مثال 1-7 نمونهاي از يك كلاس را نشان ميدهد. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> كد: // Namespace اعلان using System; class OutputClass { string myString; // سازنده public OutputClass(string inputString) { myString = inputString; } // متد نمونه public void printString() { Console.WriteLine("{0}", myString); } // تخريب كننده ~OutputClass() { // روتيني جهت آزادسازي برخي از منابع سيستم } } // كلاس آغازين برنامه class ExampleClass { // آغاز اجراي برنامه public static void Main() { // OutputClass نمونهاي از OutputClass outCl = new OutputClass("This is printed by the output class."); // Output فراخواني متد كلاس outCl.printString(); } }در مثال 1-7 دو كلاس ديده ميشوند. كلاس بالايي، كلاس OutPutClass، داراي سازنده، متد نمونه و يك تخريب كننده است. همچنين اين كلاس دارايفيلدي با نام myString است. توجه نماييد كه چگونه سازنده اين كلاس اعضاي آنراتخصيصدهي(مقداردهي) مينمايد. در اين مثال، سازنده كلاس رشته ورودي (inputString) را بعنوان آرگومان خود دريافت مينمايد. سپس اين مقدار داخل فيلد كلاس يعني myString كپي ميگردد. همانطور كه در ExampleClass مشاهده مينماييد،استفاده از سازنده الزامي نميباشد. در اين مورد سازنده پيش فرض ايجاد ميگردد. سازنده پيش فرض، سازندهاي بدون هيچ نوع آرگوماني است. البته شايان ذكر است كهسازندههاييي بدون آرگومان هميشه مورد استفاده نبوده و مفيد نيستند. جهت كارآمدكردن بيشتر سازندههاي بدون آرگومان بهتر است آنها را با تخصيصدهنده (Initializers) پيادهسازي نماييد. به مثال زير در اين زمينه توجه نماييد : public OutputClass() : this("Default Constructor String") { } فرض كنيداين عبارت در كلاس OutPutClass در مثال 1-7 قرار داشت. اين سازنده پيش فرض به يكتخصيصدهنده همراه شده است. ":" ابتداي تخصيصدهنده را مشخص مينمايد، و به دنبالآن كلمه كليدي this آمده است. كلمه كليدي this به شيء كنوني اشاره مينمايد. استفاده از اين كلمه، فراخواني به سازنده شيء كنوني كه در آن تعريف شده است، ايجادميكند. ...