-
فراخوانی یک متد با یک Threadجداگانه
معمولا متدهایی که بار پردازشی زیادی دارند موجب کندی برنامه میشن
برای جلوگیری از این کار میشه این متد هارو با استفاده از یک Thread متفاوت از Thread اصلی برنامه فراخوانی کرد.
using System.Threading;
فرض کنیم این متد رو داریم :
void DoSomething()
{
...
}
تعریف Thread جدید برای متد مورد نظر :
Thread myThread = new Thread(new ThreadStart(this.DoSomthing));
فراخوانی متد با استفاده از متد تعریف شده:
myThread.Start();
برای متوقف کردن Threadایجاد شده :
myThread.Abort();
نکته :
هر Threadفقط میتواند با object هایی کار کند که خودش آنها را ایجاد کرده است. مثلا اگر در متد DoSomethingشما بخواهید با یک label که روی فرم است کار کنید cross-thread exception رخ خواهد داد چون آن label بوسیله Threadاصلی برنامه ایجاد شده است.
-
نوشتن یک Event برای تعدادی کنترل و انجام کار مشابه بر روی انها
ممکنه توی فرمتون تعداد زیادی TextBox باشه و بخوایید هر بار که اون فوکوس میشه متن داخلش انتخاب بشه تا اگه کاربر بخواد اون رو عوض کنه نیازی به Del و BackSpace نداشته باشه (و یا اعمال دیگر )
میشه برای هر TextBox یه Event نوشت و اون کار رو انجام بدید
حالا اگه تعداد textBox ها زیاد باشه برای هر کنترل یک Event:اشتباه:
میشه برای همه اونهایک Event نوشت تا اینکار رو برای همه اونها انجام بده :
اول باید همه TextBox هایی رو که می خوایید انتخاب کنین بعد یه Event براشون بزارین تا همشون از یه Event استفاده کنند بعد این کد رو داخل اون Event می گذارید
private void textBox1_Enter(object sender, EventArgs e)
{
TextBox txtbx = sender as TextBox;
txtbx.text.selectall();
}
-
اصلاح تورفتگی های پیشفرض محیط ادیتور
ممکنه در زمانی که کد می نویسید تورفتگی های پیشفرضی که محیط ادیتور ایجاد می کنه بهم بریزه و کم یا زیاد بشه
حالا اگه بخواییم با Space و Del درستشون کنیم که:عصبانی++:
میشه اینکارو به ادیتور سپرد
1- اول کد را انتخاب می کنیم و یا کل کد Ctrl+A
2- بعد Ctrl+K
3- در آخر Ctrl+F
میشه با این کلید ها هم انجام داد Ctrl+E,D
با این روش کل کد مرتب میشه
از Edit هم قابل دسترسی است :
Edit > Advanced > Format Document
-
به دست آوردن نام یک Enum از عدد متناظر آن
public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
string s= Enum.GetName(typeof(Days),4);
-
فقط یک نمونه از برنامه بتواند اجرا شود (با استفاده از Mutex)
using System.Threading;
متود Main از کلاس StartUp پروژه رو به این شکل تغییر بدید :
[STAThread]
static void Main()
{
bool ok;
Mutex m = new Mutex(true, "YourNameHere", out ok);
if (! ok)
{
MessageBox.Show("Another instance is already running.");
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1()); // or whatever was there
GC.KeepAlive(m); // important!
}
منبع : http://www.ai.uga.edu/mc/SingleInstance.html
-
کار با اشیاء بوسیله ی نام آنها (با کمک از Reflection)
مثال - نمایش یک فرم با دانستن نام آن :
(این مثال کاربردهای زیادی میتواند داشته باشد، فرض کنید که نام فرمهای مورد نیاز برای کاربردی خاص رو در یک جدول دیتابیس ذخیره کرده اید)
using System.Reflection;
private void button1_Click(object sender, EventArgs e)
{
Assembly myAssembly = Assembly.GetExecutingAssembly();
Form myForm =
myAssembly.CreateInstance("WindowsFormsApplication 1.Form2") as Form;
myForm.ShowDialog();
}
نکته : حتما نام NameSpace را قبل از نام آبجکت قرار دهید؛ در مثال بالا "WindowsFormsApplication1" بود.
-
کار کردن با کلاس EventLog
از این کلاس معمولا جهت Log کردن عملیات یک برنامه استفاده میشود.
(برای مشاهده آن به Event Viewer ویندوز مراجعه نمایید)
using System.Diagnostics;
// Create the source, if it does not already exist.
if(!EventLog.SourceExists("MySource"))
{
//An event log source should not be created and immediately used.
//There is a latency time to enable the source, it should be created
//prior to executing the application that uses the source.
//Execute this sample a second time to use the new source.
EventLog.CreateEventSource("MySource", "MyNewLog");
Console.WriteLine("CreatedEventSource");
Console.WriteLine("Exiting, execute the application a second time to use the source.");
// The source is created. Exit the application to allow it to be registered.
return;
}
// Create an EventLog instance and assign its source.
EventLog myLog = new EventLog();
myLog.Source = "MySource";
// Write an informational entry to the event log.
myLog.WriteEntry("Writing to event log.");
منبع : http://msdn2.microsoft.com/en-us/lib....eventlog.aspx
-
1 ضمیمه
بدست آوردن جزییات اطلاعات در مورد یک پروسه در حال اجرا
using System.Diagnostics;
Process myProcess = new Process();
// Get the process start information of notepad.
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("notepad.exe");
// Assign 'StartInfo' of notepad to 'StartInfo' of 'myProcess' object.
myProcess.StartInfo = myProcessStartInfo;
// Create a notepad.
myProcess.Start();
System.Threading.Thread.Sleep(1000);
ProcessModule myProcessModule;
// Get all the modules associated with 'myProcess'.
ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
Console.WriteLine("Properties of the modules associated "
+"with 'notepad' are:");
// Display the properties of each of the modules.
for( int i=0;i<myProcessModuleCollection.Count;i++)
{
myProcessModule = myProcessModuleCollection[i];
Console.WriteLine("The moduleName is "
+myProcessModule.ModuleName);
Console.WriteLine("The " +myProcessModule.ModuleName + "'s base address is: "
+myProcessModule.BaseAddress);
Console.WriteLine("The " +myProcessModule.ModuleName + "'s Entry point address is: "
+myProcessModule.EntryPointAddress);
Console.WriteLine("The " +myProcessModule.ModuleName + "'s File name is: "
+myProcessModule.FileName);
}
// Get the main module associated with 'myProcess'.
myProcessModule = myProcess.MainModule;
// Display the properties of the main module.
Console.WriteLine("The process's main moduleName is: "
+myProcessModule.ModuleName);
Console.WriteLine("The process's main module's base address is: "
+myProcessModule.BaseAddress);
Console.WriteLine("The process's main module's Entry point address is: "
+myProcessModule.EntryPointAddress);
Console.WriteLine("The process's main module's File name is: "
+myProcessModule.FileName);
myProcess.CloseMainWindow();
پروژه مثال ضمیمه شده است.
منبع : http://msdn2.microsoft.com/en-us/lib...essmodule.aspx
-
2 ضمیمه
افزودن یک زیرمنو و دستور دلخواه به context menu ویندوز اکسپلورر
private void btnAddMenu_Click(object sender, System.EventArgs e)
{
RegistryKey regmenu = null;
RegistryKey regcmd = null;
try
{
regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
if(regmenu != null)
regmenu.SetValue("",this.txtName.Text);
regcmd = Registry.ClassesRoot.CreateSubKey(Command);
if(regcmd != null)
regcmd.SetValue("",this.txtPath.Text);
}
catch(Exception ex)
{
MessageBox.Show(this,ex.ToString());
}
finally
{
if(regmenu != null)
regmenu.Close();
if(regcmd != null)
regcmd.Close();
}
}
منبع : http://www.codeproject.com/KB/cs/app...spx?obid=10104
سورس کامل ضمیمه شد.
-
آغاز کار با کلاس Clipboard و دادن و گرفتن یک رشته متنی به/از آن
//clear clipboard
Clipboard.Clear();
//Set Text to clipboard
if (!string.IsNullOrEmpty(textBox1.Text))
Clipboard.SetText(textBox1.Text);
//Get text from clipboard
MessageBox.Show(Clipboard.GetText());
-
Hash کردن یک رشته متنی با الگوریتم MD5
using System.Security.Cryptography;
private string encryptString(string strToEncrypt)
{
UTF8Encoding ue = new UTF8Encoding();
byte[] bytes = ue.GetBytes(strToEncrypt);
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] hashBytes = md5.ComputeHash(bytes);
// Bytes to string
return System.Text.RegularExpressions.Regex.Replace
(BitConverter.ToString(hashBytes), "-", "").ToLower();
}
یک مثال ساده از نحوه ی استفاده :
MessageBox.Show(encryptString("Sinpin"));
خروجی :
e140088b10c4f19588ed3624e2b3c463
-
انجام عملیات ساده بر روی کنترل Treeview
افزودن node ریشه و سپس nodeهای فرزند
treeView1.Nodes.Clear();
treeView1.Nodes.Add("World");
TreeNode[] parents={newTreeNode("Asia"),newTreeNode("Europ"), newTreeNode("Africa"),newTreeNode("Australia"),new TreeNode("Amercia")};
treeView1.Nodes[0].Nodes.AddRange(parents);
حذف node مورد نظر
treeView1.SelectedNode.Remove();
نمایش contextmenu بر روی node انتخاب شده
در رویداد Treeview, NodeMouseClick این کد را مینویسیم
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
treeView1.SelectedNode = e.Node;
e.Node.ContextMenuStrip = cmsCommand;
}
}
-
ارسال متغیر به صفحه بعد با استفاده از url
نحوه ارسال به صفحه بعد
Response.Redirect("form2.aspx?کلمه دلخواه=" + Convert.ToString("متغیر"));
نحوه استفاده از ان در صفحه دوم
string str = Request.QueryString.Get("متغیر");
-
کار با کنترل های تولید شده توسط یک Threadاز طریق Thread ی دیگر
فرض کنیم یک تابع داریم که کاری بر روی یک Label انجام میدهد.
میخواهیم این تابع را با استفاده از یک Threadدیگر فراخوانی کنیم. دقت کنید که Label توسط threadاصلی برنامه ایجاد شده و نمیتوان بصورت عادی به آن دسترسی داشت و با cross-thread exceptionمواجه میشویم.
برای این کار طبق روش زیر میتوان عمل کرد:
using System.Threading;
threadی که برای تابع مورد نظر تعریف میکنیم :
Thread t = new Thread(new ThreadStart(this.DoSomeThing));
برای تعریف تابع مورد نظر باید به نکات زیر توجه داشته باشیم:
- زمانی که کنترل مورد نظر ما (در اینجا label) دارای مقدارtrue برای خاصیت InvokeRequired باشد ما باید تابع خود را بصورت cross-thread فراخوانی کنیم. برای اینکار از متد Invoke استفاده میکنیم که یک Delegate به عنوان پارامتر میگیرد و آنرا بصورت cross-thread فراخوانی میکند.
- زمانیکه کنترل مورد نظر دارای مقدار false برای خاصیت InvokeRequiredخود باشد میتوانیم کارهای مورد نظرمان را بر روی آن انجام دهیم.
پس ما باید در ابتدا delegateی به متد مورد نظرمان تعریف کنیم و با استفاده از آن و به شکل زیر متد خود را تعریف میکنیم :
void DoSomeThing()
{
if(label.InvokeRequired)
{
delegate void myDelegate();
myDelegate del = new myDelegate(this.DoSomeThing);
Invokde(del);
}
else
//something to do on label here
}
-
معرفی چند سایت جهت تبدیل کدهای #C و VB.net به یکدیگر
-
معرفی یک Object Browser آنلاین
http://labs.developerfusion.co.uk/So...er/view/SSCLI/
از طریق این برنامه میتوانید ضمن پرسه زدن در اسمبلی و اکسپلور کردن کلاسهای مورد نظر سورس کد اونها رو هم ببینید.
برای مثال قسمتی از خروجی این برنامه برای کلاس ArrayList رو مشاهده میکنید :
// Implements a variable-size List that uses an array of objects to store the
// elements. A ArrayList has a capacity, which is the allocated length
// of the internal array. As elements are added to a ArrayList, the capacity
// of the ArrayList is automatically increased as required by reallocating the
// internal array.
//
[DebuggerTypeProxy(typeof(System.Collections.ArrayL ist.ArrayListDebugView))]
[DebuggerDisplay("Count = {Count}")]
[Serializable()]
[System.Runtime.InteropServices.ComVisible(true)]
public class ArrayList : IList, ICloneable
{
private object[] _items;
private int _size;
private int _version;
[NonSerialized()]
private object _syncRoot;
private const int _defaultCapacity = 4;
private static readonly object[] emptyArray = new object[0];
// Note: this constructor is a bogus constructor that does nothing
// and is for use only with SyncArrayList.
internal ArrayList(bool trash)
{
}
// Constructs a ArrayList. The list is initially empty and has a capacity
// of zero. Upon adding the first element to the list the capacity is
// increased to _defaultCapacity, and then increased in multiples of
// two as required.
public ArrayList()
{
_items = emptyArray;
}
.
.
.
-
نحوه استفاده کاراکترهای خاص (مثلا علامت کپی رایت)
می تونین با قرار دادن کد هگزای مربوط کاراکتر مورد نظر خود پس از "X\" آن کاراکتر را در هر متغیر رشته ای نشان دهید.
به عنوان مثال کد هگز مربوط به کاراکتر کپی رایت A9 می باشد.
چس اگر شما دستوری مانند زیر در برانامه داشته باشید
MessageBox.Show("\xA9 by barnamenevis.org 2003-2008");
-
1 ضمیمه
معرفی SharpDevelop : یک IDE سورس باز برای #C و VB.net
هدف از معرفی این IDE این است که دوستان علاقمند سورس کد اون رو (بعنوان یک پروژه واقعی و Enterprise) دانلود و مورد بررسی قرار دهند، احیانا بشه از برخی قسمتهای آن ایده گرفت.
این سورس کد از یک سولوشن متشکل از 45 پروژه به زبان سی شارپ تشکیل شده است.
جهت دانلود فایل Setup و سورس کد به لینک زیر مراجعه کنید :
http://www.icsharpcode.net/OpenSourc...SharpDevelop22
-
نحوه ی ایجاد و تخصیص ToolTip در زمان اجرا
private void Form1_Load(object sender, EventArgs e)
{
ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(button1, "Salam");
}
-
Abstract Class در مقابل Interface
در حالیکه ممکن است بین یک Abstract Class (کلاس مجرد) و یک اینترفیس تشابهات زیادی وجود بنظر برسد اما تفاوتهای بین آن دو بیشتر است.
تفاوتها و اینکه کجا بهتر است از کدام استفاده کنیم :
- کلاس مجرد یکی از انواع کلاس است اما اینترفیس یک کلاس نیست.
- اینترفیس یک قرارداد را مشخص میکند اما کلاس مجرد ناتمام ماندن تعریف یک کلاس را.
- یک اینترفیس به هیچ عنوان نمیتواند شامل پیاده سازی درون خود باشد اما یک کلاس مجرد میتواند شامل پیاده سازیهای پیشفرض باشد (اعضایی داشته باشد که بصورت کامل و یا پیشفرض پیاده سازی شده اند)
- یک کلاس میتواند چندین اینترفیس را پیاده سازی کند اما تنها میتواند از یک کلاس مجرد به ارث رود.
- بصورت پیشفرض اعضای یک اینترفیس تماما public هستند و نمیتوان برای آنها access modifier انتخاب کرد در حالیکه در یک کلاس مجرد ممکن است.
- یک کلاس مجرد میتواند شامل فیلد، constructor، destructor و مقادیر ثابت باشد درحالیکه یک اینترفیس نمیتواند.
- بصورت کلی کار کردن با یک کلاس مجرد سریعتر از یک اینترفیس است.
- اینترفیسها برای نشان دادن قابلیتهای جانبی یک کلاس بکار میروند (مثلا چون هم انسان و هم اتومبیل حرکت میکنند هر دو میتوانند اینترفیس IMovable رو پیاده سازی کنند) درحالیکه یک کلاس مجرد خواص و رفتارهای اصلی یک کلاس را مشخص میکند.
- مورد قبلی بصورت خلاصه میشود : یک اینترفیس اغلب برای رابطه هایی مانند can-do و یا able-to استفاده میشود در حالیکه یک کلاس مجرد برای رابطه هایی از نوع : is-a
- اگر برای مثال یک متود را به یک اینترفیس اضافه کنیم باید تمامی جاهاییکه آن اینترفیس پیاده سازی شده را دنبال و متود مورد نظر را در آنجا پیاده سازی کنیم در حالیکه اگر از یک کلاس مجرد استفاده کنیم میتوانیم در همانجا متود را با پیاده سازی پیشفرض تعریف کنیم تا به مشکل برنخوریم.
- برای ایجاد خواص و رفتارهای مشابه روی مجموعه های بزرگ و نامرتبط از موجودات بهتر است از اینترفیس کمک بگیریم. یک کلاس مجرد تنها برای دسته بندی موجودات مرتبط بکار میرود.
- ... ادامه دارد
توجه : برخی از موارد بالا ممکن است کاملا معنای یکسانی داشته باشند و تنها در ساختار جمله بندی و یا زاویه ی نگرش تفاوت داشته باشند.
منابع :
http://www.codeproject.com/KB/cs/abs...nterfaces.aspx
http://msdn2.microsoft.com/en-us/library/scsyfw1d(vs.71).aspx
http://geekswithblogs.net/mahesh/arc.../05/84120.aspx
http://www.interviewcorner.com/Answe...orCategoryId=1
http://www.clt-services.com/docs/Abs...Interfaces.pdf
http://technologyandme.wordpress.com...bstract-class/
-
پخش فایلهای صوتی و ویدیویی با کمک winmm.dll
using System.Runtime.InteropServices;
string CommandString;
OpenFileDialog file = new OpenFileDialog();
[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, int hwndCallback);
private void button1_Click(object sender, System.EventArgs e)
{
if (file.ShowDialog() == DialogResult.OK)
{
CommandString = "open " + "\"" + file.FileName + "\"" + " type MPEGVideo alias MediaFile";
mciSendString(CommandString, null, 0, 0);
CommandString = "play MediaFile";
mciSendString(CommandString, null, 0, 0);
}
}
منبع : http://www.csharphelp.com/board2/rea...=12395&t=12395
-
MonoDevelop یک IDE سورس باز در لینوکس
نقل قول:
http://www.monodevelop.com/files/thu...px-Md-main.png
MonoDevelop is a popular, open source
integrated development environment for the Linux platform, primarily targeted for the development of software that uses both the
Mono and Microsoft
.NET framework. MonoDevelop integrates features similar to that of
Eclipse and Microsoft's
Visual Studio such as
Intellisense,
source control integration, and an integrated GUI and Web designer. MonoDevelop integrates a
GTK# GUI designer called
Stetic.
[1] It currently has language support for
C#,
Java,
Boo,
Nemerle,
Visual Basic.NET,
CIL, and
C++.
دانلود :
http://www.monodevelop.com/Download
مستندات :
http://www.monodevelop.com/Documentation
تصاویری از محیط :
http://www.monodevelop.com/Screenshots
-
انجام کارهای متداول روی درایوها (Partitions)
using System.IO;
بدست آوردن لیست تمامی درایوها :
listBox1.Items.AddRange(DriveInfo.GetDrives());
بدست آوردن لیست تمامی درایوها و نوع آنها :
foreach (DriveInfo drv in DriveInfo.GetDrives())
listBox1.Items.Add(drv.Name + ":" + drv.DriveType);
بدست آوردن میزان فضای کلی و خالی درایوها:
foreach (DriveInfo drv in DriveInfo.GetDrives())
if (drv.IsReady)
{
listBox1.Items.Add(drv.Name + " - free space: " + drv.AvailableFreeSpace);
listBox1.Items.Add(drv.Name + " - total size: " + drv.TotalSize);
}
-
property چیست و چرا از آن استفاده می کنیم؟
یک property متشکل از 2 متود set,get است که برای دریافت و یا تخصیص مقادیر به متغیر ها استفاده می شوند .از معایب تعریف متغیرهای کلاس به صورت Public اینست که هر موجودی از بیرون کلاس می تواند دسترسی مستقیمی به آن داشته باشد و براحتی آن را دستکاری کند و در ضمن هیچ گونه عمل validation بر روی مقادیر متغیر ها صورت نمیگیرد ,که این با اصول صحیح oop منافات دارد .
دلایل استفاده از property به جای یک متغیر:
1-رعایت اصل encapsulation
2-امکان بازرسی و validation
public class Circle
{
private double radius;
public double Radius
{
get
{
return radius;
}
set
{
if (value>0 && value<50)
radius = value;
}
}
public double GetArea()
{
return radius * radius * 3.14;
}
}
برای مطالعه بیشتر http://csharptuning.blogfa.com/
-
گرفتن یک فایل از طریق دیالوگ OpenFileDialog و دستکاری نام فایل
using System.IO;
OpenFileDialog openFile = new OpenFileDialog();
if (openFile.ShowDialog() != DialogResult.OK)
return;
// get filename from OpenFileDialog
string fileName = openFile.FileName;
// get only filename without extension and path
string onlyname = Path.GetFileNameWithoutExtension(fileName);
// get extension of filename
string extension = Path.GetExtension(fileName);
// get directory of specific filename
string directory = Path.GetDirectoryName(fileName);
// change the extension of specific filename
string newFileName = Path.ChangeExtension(fileName, "bmp");
// get the root partition of specific file
string root = Path.GetPathRoot(fileName);
-
طریقه ی استفاده از کامپوننت NotifyIcon
private void Form1_Load(object sender, EventArgs e)
{
NotifyIcon notify = new NotifyIcon();
notify.Icon = this.Icon;
notify.Visible = true;
// duration of show baloon as milisecond
int n = 3000;
// show baloon
notify.ShowBalloonTip(n, "Hi", "Salam Donya!", ToolTipIcon.Info);
//set an event handler
notify.MouseClick += new MouseEventHandler(notify_MouseClick);
}
void notify_MouseClick(object sender, MouseEventArgs e)
{
MessageBox.Show("man click shodam!");
}
-
بدست آوردن نام کامپیوتر، نام کاربر جاری و ... (بوسیله کلاس Environment)
string pcName = Environment.MachineName;
string currentUser = Environment.UserName;
string system32 = Environment.SystemDirectory;
string osVersion = Environment.OSVersion;
string domain = Environment.UserDomainName;
int cpuCount = Environment.ProcessorCount;
-
چند تا برنامه رایگان و مفید
چند تا برنامه رایگان و مفید برای دات نت کاران
ممکنه خیلی از دوستان این برنامه ها را داشته باشن
ممکن هم هست خیلی از دوستان نداشته باشن
--------------------------------------------------------
نقل قول:
Reflector for .NET
Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#, Visual Basic and IL.
--------------------------------------------------------------
Resourcer for .NET
Resourcer is an editor for .resources binaries and .resX XML file formats used with the .NET platform. Resourcer allows editing of name/string pairs, import of bitmaps/icons and and merging of resources from different sources.
--------------------------------------------------------------
CommandBar for .NET
The CommandBar class library extends Windows Forms with classes for CommandBar, ReBar, CoolBar, and bitmaped menu controls. 24 bit alpha channel images are supported on Windows 2000
--------------------------------------------------------------
Writer for .NET
Writer is a simple WYSIWYG editor for HTML files. The program allows you to edit HTML files using simple editing functionality like Undo, Redo, Cut, Copy, Paste, Find, Replace. Writer also supports text layout and formatting, hyperlink editing and insertion of dates and pictures.
--------------------------------------------------------------
Mapack for .NET
Mapack is a .NET class library for basic linear algebra computations. It supports Norm1, Norm2, Frobenius Norm, Determinant, Infinity Norm, Rank, Condition, Trace, Cholesky, LU, QR, single value decomposition, least squares solver and eigenproblems.
--------------------------------------------------------
جهت دانلود برنامه ها به اینجا مراجعه نمایید
موفق باشید
-
لیست تمامی Shortcut های Visual Studio 2005 & 2008
می تونین لیست تمامی Shortcut های موجود در Visual Studio 2005 رو از اینجا دانلود کنین:
Visual Studio .NET 2005 C# Keybinding
و برای دوستانی که Visual Studio .NET 2008 استفاده می کنند:
Visual Studio .NET 2008 C# Keybinding
-
به دست آوردن لیست کاربران یک گروه خاص در سیستم
برای اینکه بتونین لیست کاربرانی که عضو گروه خاصی هستند رو به دست بیارین از این کد استفاده کنین:
DirectoryEntry localMachine = new DirectoryEntry( "WinNT://"+
Environment.MachineName);
DirectoryEntry admGroup = localMachine.Children.Find(txtGroupName.Text, "group");
object members = admGroup.Invoke("members", null);
foreach (object groupMember in (IEnumerable)members)
{
DirectoryEntry member = new DirectoryEntry(groupMember);
Console.WriteLine("UserName: {0}",member.Name);
}
-
آیا کاربر جاری Administrator هست؟
برای اینکه متوجه بشین که آیا کاربر جاری تون عضوی از گروه کاربران Administrator هست یا نه از این کد استفاده کنین:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
string role = "BUILTIN\\Administrators";
bool IsAdmin = principal.IsInRole(role));
-
1 ضمیمه
قرار دادن یک کنترل داخل منو
حتمالا دیدید که توی بعضی نرم افزار ها داخل یک منو آیتم یک کنترل وجود داره. مثلا یه منو که توی اون یک ComboBox نشون داده می شود. یا هر کنترل دیگری شبیه به اون.
برای اینکار یه کلاسی وجود داره به نام ToolStripControlHost
شما می تونین با ساختن یک object از این کلاس و پاس کردن کنترل مورد نظر در Constructor اون و در نهایت اضافه کردن اون به مثلا Menu یا ContextMenu و یا Toolbar از اون استفاده کنین.
کد:
private void Form1_Load(object sender, EventArgs e)
{
MonthCalendar picker = new MonthCalendar();
picker.DateSelected += new DateRangeEventHandler(picker_DateSelected);
ToolStripControlHost host = new ToolStripControlHost(picker);
fileToolStripMenuItem.DropDownItems.Insert(2,host) ;
}
void picker_DateSelected(object sender, DateRangeEventArgs e)
{
MonthCalendar picker = ((MonthCalendar)sender);
this.Text = picker.SelectionStart.ToString("yyyy/MMM/dd");
}
نتیجه این کد بالا این تصویر می شود.
این سوال MCTS Windows 70-526 بود.
-
1 ضمیمه
یک مثال ساده از پیاده سازی delegate
فرض کنید متود ساده زیر را داریم و میخواهیم به عنوان پارامتر به متود دیگری ارسال کنیم
public void DisplayNumber(int num)
{
MessageBox.Show(string.Format("The value is {0}", num));
}
ابتدا نوع داده ای جدیدی ازdelegate با همین signature یعنی از نوع void و با پارامتر ی از نوع int تعریف می کنیم:
public delegate void ProcessNumber(int number);
سپس متغیری از نوع داده ا ی delegate تعریف شده به صورت زیر اعلان میکنیم :
ProcessNumber pn = new ProcessNumber(DisplayNumber);
حال میتوان این متغیر را به عنوان پارامتر به هر متود دلخواهی صادر کرد (مثلا متود زیر):
public int MultiplyNumbers(int a, int b, ProcessNumber pn)
{
int op = a * b;
pn(op);
return op;
}
با این فراخوانی :
MultiplyNumbers(4, 5, pn);
منبع:سری های آموزشی TestOut C# for programmers
http://www.testout.com
-
بدست آوردن خروجی دستورهای خط فرمان
using System.Diagnostics;
private static string CaptureCommandPromptOutput(string command, string argument)
{
ProcessStartInfo info = new ProcessStartInfo(command, argument);
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
info.CreateNoWindow = true;
Process p = new Process();
p.StartInfo = info;
p.Start();
return p.StandardOutput.ReadToEnd();
}
مثال از نحوه استفاده :
richTextBox1.Text = CaptureCommandPromptOutput("cmd", "/c dir");
و یا :
richTextBox1.Text = CaptureCommandPromptOutput("Ping", "127.0.0.1");
-
Map کردن درایوهای شبکه به کمک اجرای دستورات خط فرمان
using System.Diagnostics;
Process.Start("NET", @"USE U: \\127.0.0.1\Sinpin /PERSISTENT:YES");
-
به دست آوردن تعداد خطوط متن در یک textBox
API مربوطه
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
const uint EM_GETLINECOUNT = 0xBA;
IntPtr wp=IntPtr.Zero;
IntPtr lp=IntPtr.Zero;
طریقه استفاده
IntPtr lines = SendMessage(textBox1.Handle, EM_GETLINECOUNT,wp,lp);
MessageBox.Show(lines.ToInt32().ToString());
نمونه برنامه
-
معرفی لینک دانلود چند فیلم آموزشی ساده در مورد...
1
Video How to: Creating a Simple Data Application
video summary
نقل قول:
Displaying data from a database on a Windows Form is easy with Visual Studio 2008. You can display data on forms in Windows applications by dragging items from the Data Sources window onto your form.
This video shows how to create an application that displays data from two related tables in a database. The following tasks are included in the process:
How to create a Windows-based application.
How to create and configure a dataset that is based on the Customers and Orders tables in the Northwind database by using the Data Source Configuration Wizard.
How to add controls to display data from the Customers table.
How to test the application, selecting different customers and verifying that the correct orders are shown for the selected customer.
How to modify data and save it back to the database.
watch the video
download the video
------------------------------------------------------------
2)
Creating an N-Tier Data Application
-------------------------------------------------------------
3)
Writing Queries in C# (LINQ)
-----------------------------------------------------------
4)
Create a C# WPF Application
--------------------------------------------------
اطلاعات مربوط به ویدئو های 2 تا 4 را با کلیک کردن بر روی آن ها می تونید مشاهده کنید.
-
انجام عملیات متداول بر رشته ها
حذف تمامی whiteSpace ها :
//STRIPS WHITE SPACES FROM BOTH START + FINSIHE
string Name = " String Manipulation " ;
string NewName = Name.Trim();
حذف whiteSpace ها (یا حروفی خاص) از آخر رشته :
//STRIPS CHRS FROM THE END OF THE STRING
string Name = " String Manipulation " ;
//SET OUT CHRS TO STRIP FROM END
char[] MyChar = {' ','n'};
string NewName = Name.TrimEnd(MyChar);
حذف whiteSpace ها (یا حروفی خاص) از ابتدای رشته :
//STRIPS CHRS FROM THE START OF THE STRING
string Name = " String Manipulation " ;
//SET OUT CHRS TO STRIP FROM END
char[] MyChar = {' ','S'};
string NewName = Name.TrimStart(MyChar);
جستجوی یک رشته ی در رشته ی دیگر :
string MainString = "String Manipulation";
string SearchString = "pul";
int FirstChr = MainString.IndexOf(SearchString);
جایگزین کردن بخشی از یک رشته :
string MainString "String Manipulatin";
string CorrectString = MainString.Replace("Manipulatin", "Manipulation");
حذف کردن بخشی از یک رشته :
string MainString = "S1111tring Manipulation";
string NewString = MainString.Remove(1,4);
تفکیک یک رشته :
string MainString = "String Manipulation";
string [] Split = MainString.Split(new Char [] {' '});
//SHOW RESULT
MessageBox.Show(Convert.ToString(Split[0]));
MessageBox.Show(Convert.ToString(Split[1]));
منبع : http://www.developerfusion.co.uk/show/4398/
-
مقایسه دو رشته بدون توجه به بزرگی و کوچکی حروف
if (string.Compare(str1, str2, false) == 0) // Case Insensitive!
Console.WriteLine("Two strings are similar to each other.");
مقایسه دو رشته با توجه به بزرگی و کوچکی حروف
if (string.Compare(str1, str2, true) == 0) // Case Insensitive!
Console.WriteLine("Two strings are similar to each other.");
برگرداندن یک رشته ار داخل یک رشته
string MainString = "String Manipulation";
//SHOW RESULT
MessageBox.Show(str1.Substring(6, 12));
روش دیگر استفاده از تابع Split
string[] aryStrings;
str1 = "Hello,How;Are,You";
aryStrings = str1.Split(',', ';', '*');
foreach (string str in aryStrings)
MessageBox.Show("{0}", str);
-
تفاوت GZip و Deflate در فشرده کردن
هر دو در استفاده از الگوریتم فشرده سازی دقیقا یکسان هستند و تنها تفاوتی بین آن دو اینستکه :
با استفاده از GZip میتوانید اطلاعات اضافه ای (metadata) را به قسمت header و footer فایل خروجی اضافه نمایید لذا اندکی میتواند حجم خروجی آن از Deflate بیشتر شود.
بعبارت دقیقتر کلاس GZipStream یک لفافه (wrapper) بر روی کلاس DeflateStream است و روش فشردن اطلاعات در هردو کلاس مطابق تعریف RFC 1952 است.
منبع : http://msdn2.microsoft.com/en-us/magazine/cc163727.aspx