PDA

View Full Version : 1001 نکته در سی شارپ



صفحه : 1 [2] 3

sinpin
پنج شنبه 01 فروردین 1387, 23:21 عصر
این آموزش همراه با یک مثال انجام میشود.
(توجه : در بهینه نبودن این مثال شک نداشته باشید چون فی البداهه و صرف آموزش نوشته شده است)

مثال - میخواهیم تمامی فایلهای موجود در پوشه ی ویندوز را توسط یک thread پشت زمینه (مستقل از UI Thread) در یک لیست باکس نمایش دهیم.

بلافاصله و بدون مقدمه؛ ابتدا یک آبجکت از نوع BackgroundWorker بسازید و در زمان کلیک شدن یک دکمه مقادیر آن را به شکل زیر تغییر دهید :

BackgroundWorker worker = new BackgroundWorker();

private void button1_Click(object sender, EventArgs e)
{
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged );
worker.RunWorkerAsync(new DirectoryInfo(@"C:\Windows"));
}خط آبی شده حاکی از آن است که worker میتواند در زمان اجرا میزان پیشرفت خود را گزارش کند(که باعث توانایی کار کردن با عناصر UI بصورت مستقیم و بدون استفاده از delegate میشود)
سپس ایونت هندلرها رو تخصیص داده
و در خط آخر نیز دستور اجرای آسنکرون اون رو با یک پارامتر ورودی را صادر کردیم.

کار زمانبری که میخواهیم در پشت زمینه انجام شود را در رویداد DoWork مینویسیم و این همان رویدادی ست که با دستور worker.RunWorkerAsync در تیکه کد قبلی تحریک میشود :

void worker_DoWork(object sender, DoWorkEventArgs e)
{
DirectoryInfo primaryDir = e.Argument as DirectoryInfo;
int i = 0;
foreach (DirectoryInfo dir in primaryDir.GetDirectories())
{
foreach (FileInfo file in dir.GetFiles())
{
worker.ReportProgress(i++, file.FullName);
}
}
}همانطور که مشاهده کردید در خط اول متود بالا پارامتر ورودی را در قالب یک DirectoryInfo در آوردیم که بتوانیم از آن استفاده کنیم.
و به ازای هر فایل شناخته شده (البته در عمل : بهتر است اینکار مثلا به ازای هر 100 فایل پیدا شده انجام شود) یک گزارش از میزان پیشرفت همراه با پارامترهای شماره فایل و نام آن میفرستیم.
و در نهایت برای منعکس کردن پیشرفتهای لحظه ای و اختصاص آنها به لیست باکس مینویسیم:

void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
listBox1.Items.Add(e.ProgressPercentage.ToString() + " : " + e.UserState.ToString());
}توجه کنید که در کد بالا مقدار e.UserState همان آبجکتی است که در زمان DoWork ارسال کردید.

sinpin
جمعه 02 فروردین 1387, 14:47 عصر
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;

[DllImport("user32")]
internal static extern IntPtr GetDC(IntPtr hwnd);

[DllImport("User32.dll")]
internal static extern void ReleaseDC(IntPtr dc);

public void PaintRectangleToScreen()
{
IntPtr deskDC = GetDC(IntPtr.Zero);
Graphics g = Graphics.FromHdc(deskDC);
Font font = new Font("Arial Black", 36);
DrawStringOnCenter(g, "Sale 1387 mobarak!", font, new Point(0, -25));
font = new Font("Arial Black", 18);
DrawStringOnCenter(g, "by: Sinpin", font, new Point(0, 25));
Rectangle rect = new Rectangle(200, 300,
Screen.PrimaryScreen.Bounds.Width - 400,
Screen.PrimaryScreen.Bounds.Height - 600);
g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.DodgerBlue))
, rect);
g.DrawRectangle(new Pen(Color.DodgerBlue, 3), rect);
g.Dispose();
ReleaseDC(deskDC);
}

private void DrawStringOnCenter(Graphics g, string str, Font font, Point offset)
{
SizeF size = g.MeasureString(str, font);
g.DrawString(str, font, Brushes.White,
new PointF(
(Screen.PrimaryScreen.Bounds.Width - size.Width) / 2 + offset.X,
(Screen.PrimaryScreen.Bounds.Height - size.Height) / 2 + offset.Y)
);
}و مثالی از طریقه ی استفاده :

private void Form1_Load(object sender, EventArgs e)
{
PaintRectangleToScreen();
this.Close();
}این یک مثال خیلی ساده از ترسیم مستقیم بر دسکتاپ بود.
و این یک مثال واقعی تر : http://www.codeproject.com/KB/applications/pcalgen.aspx

sinpin
شنبه 03 فروردین 1387, 16:52 عصر
در تاپیک زیر بحثهایی درمورد ساخت یوزرکنترل و ایجاد رویدادهایی برای آن انجام گرفت و دو پروژه نمونه نیز آپلود گردید :

http://barnamenevis.org/forum/showthread.php?t=94791
http://barnamenevis.org/forum/showpost.php?p=466653
http://barnamenevis.org/forum/showpost.php?p=466715

sinpin
دوشنبه 05 فروردین 1387, 15:03 عصر
Decorator Pattern

http://www.dofactory.com/Patterns/Diagrams/decorator.gif



این pattern در طبقه بندی الگوهای ساختاری جای دارد و امکان افزودن قابلیتها و تزیینات جدید به یک آبجکت را بصورت داینامیک و در زمان اجرا ممکن میکند.
این امکان بوسیله ی افزودن یک کلاس جدید (decorator) ممکن میشود که کلاس اصلی را wrap میکند. این wrapping معمولا با پاس دادن آبجکت اصلی بعنوان یک پارامتر به constructor decorator انجام میشود.

Decorator قابلیتهای جدید را در آبجکت پیاده سازی میکند و باید همان اینترفیسی را که کلاس اصلی پیاده سازی میکند، پیاده سازی کند.
در زمان اجرا میتوان به یک آبجکت هم decorator افزود و هم کاست بدون آنکه مصرف کننده متوجه تغییرات گردد.

Decorating در واقع بعنوان روش جایگزین subclassing (با انعطاف بیشتر) جهت توسعه قابلیتهاست با این تفاوت که :
Subclassing رفتارهای جدیدی را در زمان کامپایل(compile-time) اضافه میکند در حالیکه decorating میتونه رفتارهای جدیدی را در زمان اجرا(runtime) اضافه نماید.
با decorating میتوانیم یک قابلیت را تنها به یک آبجکت خاص از یک کلاس بدهیم بدون آنکه سایر آبجکتهای آن کلاس تغییر کنند.گاه در خیلی از مسایل بظاهر مشکل که صدها کلاس مشتق شده با روابطی پیچیده دارند؛ با پیاده سازی این الگو به یک طراحی آسان و خوانا خواهیم رسید.


یک مثال قابل دانلود :
http://www.codeproject.com/KB/architecture/PatternsIntro_Decorator.aspx

منابع :
http://www.dofactory.com/Patterns/PatternDecorator.aspx
http://www.informit.com/articles/article.aspx?p=31350
http://en.wikipedia.org/wiki/Decorator_pattern

sinpin
دوشنبه 05 فروردین 1387, 20:50 عصر
Singleton Pattern
http://www.dofactory.com/Patterns/Diagrams/singleton.gif

هدف : میخواهیم تضمین کنیم که از یک کلاس تنها بتوان یک آبجکت (حالت ساده و متعارف سینگلتون) ایجاد کرد و همه ی درخواستها نیز تنها به همان یک آبجکت هدایت شوند و نیز بتوان یک دسترسی عمومی به آن داشت.

اولین قدم : سازنده ی کلاس را private میکنیم
چرا private ؟ - پاسخ : تا هیچکسی نتواند از کلاس آبجکت بسازد.

دومین قدم : یک فیلد استاتیک از نوع خود کلاس تعریف میکنیم.
چرا استاتیک : چون قرار است در یک متود استاتیک از آن استفاده کنیم.
چرا private : چون قرار است امکان دسترسی به این آبجکت از طریق یک متود یا پراپرتی صورت گیرد و دسترسی مستقیم مطلوب نیست.

سومین قدم : ایجاد یک پراپرتی یا متود public و استاتیک که فیلد را برمیگرداند.
چرا public ؟ چون میخواهیم از همه جا قابل دسترسی باشد.
چرا استاتیک ؟ چون آبجکتی از کلاس ندارم و ناچارا باید دسترسی به این متود یا پراپرتی در سطح کلاس باشد.

پس تا اینجا داریم :

public sealed class Singleton
{
// Private Constructor
Singleton() { }

// Private object instantiated with private constructor
static readonly Singleton instance = new Singleton();

// Public static property to get the object
public static Singleton UniqueInstance
{
get { return instance; }
}
}معمولا بهتر است این پیاده سازی بصورت lazy instantiation باشد (یعنی تا قبل از اولین invoking آبجکت مقداردهی اولیه نشود) :

public class Singleton
{
// Private constructor
Singleton() { }

// Nested class for lazy instantiation
class SingletonCreator
{
static SingletonCreator() { }
// Private object instantiated with private constructor
internal static readonly
Singleton uniqueInstance = new Singleton();
}

// Public static property to get the object
public static Singleton UniqueInstance
{
get { return SingletonCreator.uniqueInstance; }
}
}این الگو به شدت در طراحیهای مختلف و الگوهای دیگر (مانند : Abstract Factory, Façade , ...) مورد استفاده دارد.

____________________________
کدها از کتاب : http://www.oreilly.com/catalog/9780596527730 (http://www.oreilly.com/catalog/9780596527730/)

منابع :
http://en.wikipedia.org/wiki/Singleton_pattern
http://www.dofactory.com/Patterns/PatternSingleton.aspx

sinpin
پنج شنبه 08 فروردین 1387, 21:57 عصر
- این پست جابجا شد -

این کد را در کلاس مربوط به کنترل TextBox خود بنویسید :

protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Return)
SendKeys.Send("{TAB}");
return base.ProcessDialogKey(keyData);
}و در مورد استفاده در کنترلهای استاندارد :

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
SendKeys.Send("{TAB}");
}

razavi_university
پنج شنبه 15 فروردین 1387, 12:34 عصر
TextBox عددی


private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsDigit( e.KeyChar ) || char.IsControl( e.KeyChar ) ) )
{
e.Handled = true;
}
}

TextBox عددی با اعشار


private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsDigit( e.KeyChar) || char.IsControl( e.KeyChar ) ||(e.KeyChar== (char )46)) )
{
e.Handled = true;
}
}

TextBox فقط کاراکنری


private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsLetter( e.KeyChar ) || char.IsControl( e.KeyChar ) ) )
{
e.Handled = true;
}
}

TextBox برای فقط حروف بزرگ


private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsUpper( e.KeyChar ) || char.IsControl( e.KeyChar )) )
{
e.Handled = true;
}
}
TextBox برای فقط حروف کوچک


private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsLower( e.KeyChar ) || char.IsControl( e.KeyChar )) )
{
e.Handled = true;
}
}
چک کردن TextBoxهای خالی (می‌توانید کلیه TextBox های روی فرمتان را به آن ارسال کنید )


public static bool ChkEmpty(params System.Windows.Forms.TextBox[ ] tb) { int i; for (i = 0; i < tb.Length; i++)
{
if (tb[i].Text.Trim() == "")
{
MessageBox.Show("Don't keep field empty");
tb[i].Focus();
return false;
}
return true;
}
TextBox اعشاری(با علامت اعشار مربوط به هر منطقه)


string DecimalSeparator = Thread.CurrentThread.CurrentCulture.NumberFormat.N umberDecimalSeparator;
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsDigit( e.KeyChar) || char.IsControl( e.KeyChar ) || (DecimalSeparator.IndexOf(e.KeyChar) != -1 ) ) )
{
e.Handled = true;
}
}

منبع : مقداری ‍CodeProject

razavi_university
پنج شنبه 15 فروردین 1387, 12:55 عصر
برای ساخت یک Connection String بدون نیاز به Visual Studio ، به روش زیر عمل می‌کنیم:
یک فایل جدید ایجاد کرده و پسوند آنرا به "udl" تغییر می‌دهیم. (مثلا یک فایل متنی که می شود New Text file.udl)
می‌بینید که آیکون آن تغییر کرد :متفکر:
آنرا باز کنید. پنجره مشخصات Data Link باز می‌شود
برای ایجاد Connection String برای SQL گزینه Microsoft OLE DB Provider For SQL Server را از لبه Provider انتخاب کنید
دکمه Next را زده و یا به لبه Connection بروید
از این قسمت تمامی مشخصه‌های ارتباط را می‌توانید تعیین کنید
بعد از مشخص کردن تمامی پارامتر‌های مورد نیاز دکمه Test Connection را برای اطمینان از درستی آن بزنید. اگر همه چیز درست است پنجرا را ببندید
حال فایلی که ابتدا ایجاد کردید را با Notepad باز کنید.‍Connection String درون فایل ایجاد شده است.(البته این ارتباط برای OLE DB است که می توانید این قسمت را حذف کنید)
اگر از User و Password استفاده می‌کنید، تیک Allow Saving Password را بزنید تا پسورد در فایل ذخیره شود.
منبع : CodeProject (http://www.codeproject.com/)

razavi_university
شنبه 17 فروردین 1387, 12:05 عصر
شاید نیاز داشته باشید بفهمید کاربر از موس استفاده می‌کند یا نه؛ و در صورتی که استفاده می‌کند اطلاعاتی از موس(تعداد دکمه، Wheel)
این اطلاعات و یا سایر اطلاعاتی را که از سیستم کاربر می‌خواهید می‌توانید در کلاس Enviroment بیابید.



SystemInformation.MousePresent.ToString()
SystemInformation.MouseButtons.ToString()
SystemInformation.MouseButtonsSwapped.ToString()
SystemInformation.MouseWheelPresent.ToString()

tthenry14plus
یک شنبه 18 فروردین 1387, 01:23 صبح
یادمه که قبلا یکی از دوستان دنبال روشی برای اینکار می گشت
برای اینکار حدود 100 خط نوشته بود که در اون از حلقه های تو در تو استفاده کرده بود و عملا جواب نمی داد

با این چند خط به راحتی می تونید اینکارو انجام بدید



using System.Drawing.Drawing2D;


privatestaticImage fill_layer(PictureBox Pic_Box,Image img,Color Layer_color,int Percent)
{
//از img به عنوان بک آپ استفاده می شود
//percent درصد شفافیت است
Pic_Box.Image = img;
Bitmap bmp_img = newBitmap(Pic_Box.Image);
Graphics ghp = Graphics.FromImage(bmp_img);
LinearGradientBrush LineaBrush;
LineaBrush = newLinearGradientBrush(newRectangle(0, 0, bmp_img.Width, bmp_img.Height), Color.FromArgb(Percent, Layer_color), Color.FromArgb(Percent, Layer_color), LinearGradientMode.BackwardDiagonal);
ghp.FillRectangle(LineaBrush, newRectangle(0, 0, bmp_img.Width, bmp_img.Height));
return (Image)bmp_img;
}


pictureBox1.Image = fill_layer(pictureBox1,pictureBox2.Image, Color,Value);
سورس برنامه قرار داده شده که همه چیز اونجا مشخص شده.

---------------------------------------------

ضمیمه تکمیل شده که امکان بینهایت لایه گذاری و نیز ذخیره عکس را دارد را می توانید دانلود کنید

sinpin
یک شنبه 18 فروردین 1387, 05:36 صبح
برای افزودن آیکن مورد نظر خود به یک کامپوننت کافیست که موارد زیر را رعایت کنید :
فایل تصویر باید از نوع bitmap و دقیقا همنام کلاس اما با پسوند bmp باشد
اندازه ی تصویر مربوطه باید حتما 16x16 باشد وگرنه بصورت اتوماتیک برای رسیدن به آن سایز بریده خواهد شد.
تصویر انتخابی باید از نوع 16 رنگ باشد
و ...برای توضیحات کاملتر گوشه هایی از متن اصلی کتاب رو مشاهده میکنید :

The Toolbox Icon
Adding a Toolbox icon is refreshingly easy. All you need to do is add a bitmap to your project and follow
these rules:
• The bitmap file must have the same name as your custom control class (but with the extension
.bmp). For example, you would use a bitmap named CustomTextBox.bmp for the
CustomTextBox control.
• The bitmap must be 16×16 pixels. Otherwise, it will be mangled when Visual Studio
attempts to scale it.
• The bitmap must use only 16 colors.
• Once you add the bitmap file, you must use the Properties window to set the Build Action to
Embedded Resource.

Incidentally, it’s possible to use a toolbox icon that uses a filename that doesn’t match the name
of your control class. In this case, you need the help of the ToolboxBitmap attribute. For example, the
following code configures the CustomTextBox control to use a bitmap named CustomTextBox1.bmp:

[ToolboxBitmap(typeof(CustomTextBox), "CustomTextBox1.bmp")]
public class CustomTextBox : WebControl, IPostBackDataHandler
{ ... }
You can also use this trick to place bitmaps in a separate subfolder in your project. For example,
here’s how you would refer to a bitmap in a folder named Images:
[ToolboxBitmap(typeof(CustomTextBox), @"Images\CustomTextBox1.bmp")]
Finally, it’s also possible to steal bitmaps from core ASP.NET controls, using code like this:

[ToolboxBitmap(typeof(System.Web.UI.WebControls.Tex tBox))]
If you’re creating a simple control, all you may need to do is add a set of descriptive properties
and a toolbox icon. However, more complex controls often require other considerations. These
range from code serialization issues (how the control tag is created when you use the Properties window)
to control designers (advanced tools for customizing the design-time HTML your control
renders). In the rest of the chapter, you’ll take a look at these topics.
منبع کتاب : http://www.amazon.com/Pro-ASP-NET-3-5-2008-Second/dp/1590598938

danial82
دوشنبه 19 فروردین 1387, 12:12 عصر
از کلاس stopwatch که در فضای نام System.Diagnostics قرار داره هم می تونید استفاده کنید.


// Create an instance of the new StopWatch class
Stopwatch myWatch = new Stopwatch();

// Start the timer
myWatch.Start();

//Code Here...

// Now we can stop the timer and display the elapsed time along
myWatch.Stop();
elapsedTimeTextLabel.Text = myWatch.ElapsedMilliseconds.ToString() ;

به نقل از ezamnejad کاربر همین سایت

danial82
دوشنبه 19 فروردین 1387, 12:21 عصر
private void Form1_Load(object sender, EventArgs e)
{
//تنظیم زمان تکرار بر حسب میلی ثانیه
timer1.Interval = 1000;
timer1.Start();
timer1_Tick(sender, e);
}

private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = DateTime.Now.ToString();
}

sinpin
سه شنبه 20 فروردین 1387, 18:25 عصر
چطور میتوان یک فرم رو سایه دار کرد ؟

کد زیر را در فرم مورد نظر بنویسید :

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private const int CS_DROPSHADOW = 0x00020000;

protected override CreateParams CreateParams
{
get
{
CreateParams p = base.CreateParams;
p.ClassStyle |= CS_DROPSHADOW;
return p;
}
}
}
دقت داشته باشید که برای نمایش سایه باید تیک مربوط به نمایش سایه ی ماوس را زده باشید (به تصویر ضمیمه شده مراجعه کنید)

منیع : http://www.codeproject.com/KB/cs/LetYourFormDropAShadow.aspx

sinpin
چهارشنبه 21 فروردین 1387, 04:25 صبح
گاهی لازمه شما بخشی از یک پروژه و یا فایلهایی از آن را موقتا غیرقابل کامپایل کنید.
یک مثال - میخواهید بخشی از یک برنامه رو تست کنید اما کلاسی را که جدیدا نوشتید دارای خطای زمان کامپایل است و اجازه ی اجرا شدن برنامه را نمیدهد و گاهی لزومی نداره که ابتدا اون کلاس رو کاملا رفع مشکل کنید تا بعد بتونید برنامه رو تست کنید.

برای غیرقابل کامپایل کردن بخشی از یک پروژه :
روی آن فایل یا فولدر مورد نظر کلیک راست کرده و گزینه ی Exclude From Project را انتخاب کنید.

راه دیگر اینستکه :
پسوند فایلهایی را که میخواهید موقتا کامپایل نشوند را به چیزی غیر از cs (برای مثال : cs.bak) تغییر دهید.

tthenry14plus
چهارشنبه 21 فروردین 1387, 23:10 عصر
برنامه ای که مشابه ColorBalance فوتوشاپ عمل می کند
به کمک این برنامه می توانید تعادل رنگی قرمز، سبز، آبی، و زرد را در
عکس های مورد نظر خود تغییر دهید.
می دونم که کسی عقلشو از دست نداده که از این برنامه برای اینکار
استفاده کنه ولی نمونه بسیار خوبی برای اینکاره.
توی برنامه از 4 کنترل TrackBar استفاده شده که به صورت لیستی به فرم
اضافه میشن، نام رنگ ها هم همینطور؛ ازین رو به سادگی و با 3 تغییر بسیار ساده
می تونید تعداد رنگ ها را تغییر دهید.
برای اینکار مقدار CNT را تغییر داده و رنگ ها و نام های خود را به آرایه ها اضافه یا کم
کنید، طول فرم هم بسته به تعداد اونها تغییر می کنه.

تعریف متغیرها


staticint CNT = 4;
publicstaticList<TrackBar> tbs = newList<TrackBar>();
Color[] clr = newColor[] { Color.Red, Color.Green, Color.Blue, Color.Yellow};
string[] lb = newstring[] { "R", "G", "B", "Y"};
Image img2,img_org;

ColorBalance


privatestaticImage fill_layer_ARGB(PictureBox PicBox, Image img,Color[] colr)
{
PicBox.Image = img;
Bitmap bmp_img = newBitmap(PicBox.Image);
Graphics ghp = Graphics.FromImage(bmp_img);
LinearGradientBrush LineaBrush;
for (int i = 0; i < CNT; i++)
{
LineaBrush = newLinearGradientBrush(newRectangle(0, 0, bmp_img.Width, bmp_img.Height), Color.FromArgb(tbs[i].Value, colr[i]), Color.FromArgb(tbs[i].Value, colr[i]), LinearGradientMode.BackwardDiagonal);
ghp.FillRectangle(LineaBrush, newRectangle(0, 0, bmp_img.Width, bmp_img.Height));
}
return (Image)bmp_img;
}

اضافه کردن TrackBar ها و Label ها


void add_tracks()
{
for (int i = 0; i < CNT; i++)
{
TrackBar tb = newTrackBar();
tb.Size = newSize(114, 45);
tb.Location = newPoint(i * 114 + 214, 545);
tb.Enabled = false;
tb.Minimum = 0;
tb.Maximum = 255;
tb.Value = 0;
tb.TickStyle = TickStyle.None;
tb.ValueChanged += newEventHandler(tb_ValueChanged);
tbs.Add(tb);
Label l = newLabel();
l.Text = lb[i];
l.Location = newPoint(i * 114 + 260, 567);
this.Controls.Add(l);
}
this.Controls.AddRange(tbs.ToArray());
this.Width += (CNT - 4) * 110;
label1.Left = (int)((pictureBox1.Width - label1.Width) / 2);
}


مثالی از برنامه داخل تصاویر اومده
همونطور که می دونید ترکیب 2 رنگ زرد و آبی میشه سبز
که داخل تصویر مشخصه

gdevnb
جمعه 23 فروردین 1387, 04:03 صبح
اتصال به SqlServer با استفاده از IP Address



using System;
using System.Data.SqlClient;

namespace ConnectIPAddressSqlServer
{
class Program
{
static void Main(string[] args)
{
string connectString =
"Network Library=dbmssocn;Network Address=127.0.0.1;" +
"Integrated security=SSPI;Initial Catalog=AdventureWorks";

using (SqlConnection connection = new SqlConnection(connectString))
{
connection.Open( );

// Return some information about the server.
Console.WriteLine(
"ConnectionState = {0}\nDataSource = {1}\nServerVersion = {2}",
connection.State, connection.DataSource,
connection.ServerVersion);
}

Console.WriteLine("\nPress any key to continue.");
Console.ReadKey( );
}
}
}
SQL Server network libraries فایلهای dll هستند که عملیات شبکه مورد نیاز برای کلاینتها را انجام می دهند.
پروتکلها شبکه موجود برای Sql Server

• Shared Memory

• TCP/IP


استفاده از پروتکل TCP/IP برای ارتباط

• Named Pipes


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

• VIA


پروتکل Virtual Interface Adapter که توسط سخت افزارهای VIA مورد استفاده قرار می گیرد. از SqlSever2005 به بعد دیگراین پروتکل پشتیبانی نمی شود.

• AppleTalk ADSP

• Banyan VINES

• Multiprotocol




به صورت اتوماتیک از بین پروتکل های موجود یکی را انتخاب می کند که از لحاظ کارایی همانند استفاده از native network library می باشد.که از پروتکلهای TCP/IP Sockets, NWLink IPX/SPX, Named Pipes پشتیبانی می کند

• NWLink IPX/SPX


پروتکل شبکه های ناول

برای اطلاعات بیشتر در مورد پیکربندی پروتکلهای شبکه به Microsoft SQL Server Books Online مراجعه کنید
استفاده از سوکتهای TCP/IP برای SQL Server عملکرد و مقیاس پذیری برنامه را بهبود می بخشد(در زمانی که با حجم بالایی از داده سرو کار داریم).این مکانیسم از بعضی از مسائل امنیتی مربوط به named pipes اجتناب می ورزد.
در صورت استفاده از هر پروتکلی , کلاینت و سرور با ید برای استفاده از TCP/IP پیکر بندی شوند.
SQL Server Configuration Manager/SQL Server Network Configuration/enabling TCP/IP in the Protocols subnode.

توجه کنید که Instanse پیش فرض SqlServer از پورت 1433 استفاده می کند.در صورتی که شما آنرا برای پورت دیگری پیکربندی کرده باشید Connection String را به صورت زیر تغییر دهید

Network Address=(local),1450منبع:http://gdevnb.blogfa.com (http://gdevnb.blogfa.com/)

sinpin
جمعه 23 فروردین 1387, 05:12 صبح
جهت کمک به فرآیند جستجو، بهتره عنوان پست به انگلیسی نیز نوشته شود :


Get System Idle Time



struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}

[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

public static uint GetIdleTime()
{
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeO f(lastInPut);
GetLastInputInfo(ref lastInPut);

return ((uint)Environment.TickCount - lastInPut.dwTime);
}مثالی از نحوه ی استفاده :

private Timer CheckIdleTimer;

private void Form1_Load(object sender, System.EventArgs e)
{
CheckIdleTimer = new Timer();
CheckIdleTimer.Interval = 1000;
CheckIdleTimer.Start();
CheckIdleTimer.Tick += new EventHandler(CheckIdleTimer_Tick);
}

private void CheckIdleTimer_Tick(object sender, System.EventArgs e)
{
this.Text = (GetIdleTime() / 1000).ToString();
}
با استفاده از : http://www.codeproject.com/KB/cs/GetIdleTimeWithCS.aspx

gdevnb
شنبه 24 فروردین 1387, 08:39 صبح
The Code Project Browser Add-in For VS 2005 And 2008


باز کردن کدهای سایت Code Project مستقیماً با ویژوال استدیو دات نت 2005 و 2008

http://www.codeproject.com/KB/macros/cpbrowser/cpbrowser2a.jpg



توضیحات:



You can browse The Code Project normally using the add-in.
Once you click on a sample zip file link, the following will happen:

1. You will be prompted to open the project using the Code Project Browser.
If you say no here, then the browser will handle your request and can save the
zip file like you normally do. NOTE: You must be logged into the Website to
download files from The Code Project.

2. If you say yes, then the add-in will download the project and unzip it to
My Documents\My Code Project Samples\[name].
[name] is derived from the unique directory that the article and sample
reside in on The Code Project.

3. The add-in will inspect the new directory for any solutions, and if
one is found, it will load it directly. If no solution is found, it will look
for any project files, and if one or more are found, it will load the
first one directly.

4. An entry is created in the "Downloaded Projects" view for the new directory.
All solutions, projects and sample executables will be included under the new
project tree node


دانلود:

http://www.codeproject.com/KB/macros/cpbrowser.aspx

az_farzaneh
دوشنبه 26 فروردین 1387, 11:22 صبح
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] colorNames;
colorNames = System.Enum.GetNames(typeof(KnownColor));
listBox1.Items.AddRange(colorNames);
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
KnownColor selectedColor;
selectedColor = (KnownColor)System.Enum.Parse(typeof(KnownColor), listBox1.Text);
this.BackColor = System.Drawing.Color.FromKnownColor(selectedColor) ;
}
}
منبع:pro.net2.0 windows forms and custom controls Apress

tthenry14plus
سه شنبه 27 فروردین 1387, 03:14 صبح
برای اینکار دو روش ساده وجود داره
یکی از روش ها قبلا گفته شد که از حلقه استفاده میشد،
مشکلی که اون روش داشت این بود که خیلی خیلی زمانبر بود
اما با این روش در حداقل زمان اینکار انجام میشه.



using System.Drawing;



void New_file(PictureBox pb)
{
bmp_image = new Bitmap(pb.Width, pb.Height);
g = Graphics.FromImage(bmp_image);
g.FillRectangle(Brushes.White, newRectangle(0, 0, bmp_image.Width, bmp_image.Height));
pb.Image = bmp_image;
}

Mahdi.Kiani
شنبه 31 فروردین 1387, 23:54 عصر
//define LinearGradientBrush with Init Prop
//
LinearGradientBrush lgBrush = new LinearGradientBrush(this.ClientRectangle,
Color.White, Color.Blue,130);

//
// Define ColorBlend
//

ColorBlend cb = new ColorBlend(5); // 5 is count of color which sets to Brush
cb.Colors = new Color[] {Color.Red,Color.Blue,Color.Gold,Color.Black,Color .Brown,Color.Lime };

//define the point of each color
//all the Points must be between 0 and 1
// 0 and 1 should be exist in point collection
cb.Positions = new float[] {0.0f,0.2f,0.4f,0.6f,0.8f,1f };

// assign colorBlend to gardientBrush
lgBrush.InterpolationColors = cb;

//draw shape and fill it eith gradientBrush
e.Graphics.FillRectangle(lgBrush, this.ClientRectangle);



توضیح :بعضی از دوستان نحوه استفاده از این کد را متوجه نشده اند. و با پیغام خصوصی سوال کردند که چگونه از این کد باید استفاده کرد.
هر کنترلی را که شما بتوانید شی گرافیکی اون را به دست آورید می تونید این کد را برای اون اعمال کنید..
البته همانطور که می دونین، بهترین مکان همیشه برای کار های گرافیکی رویداد Paint می باشد.
نکته دیگه اینکه اگر عکس کشیده شده، هنگام Resize کردن فرم یا کنترل مورد نظر دارای پرش و .. می باشد، به راحتی می توانید با متد SetStyle مشکل ان را حل کنید.موفق باشید

Mahdi.Kiani
دوشنبه 02 اردیبهشت 1387, 23:48 عصر
این کلاس یکی دیگر از کلاس های کار با گرافیک است که در فضای نام System.Drawing.Drawing2D قرار گرفته است.

این کلاس از Enum ای به نام HatchStyle استفاده می کند تا استایل های از پیش تعریف شده ای را برای شما ترسیم کند.

HatchStyle دارای 57 نوع استایل مختلف می باشد که همگی آن ها همراه با نام آن ها در شکل Attach شده ترسیم شده اند.

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

کد برنامه ای که این عکس را ترسیم می کند :



//create a hBrush
System.Drawing.Drawing2D.HatchBrush hBrush = new HatchBrush((HatchStyle)(Enum.Parse(typeof(HatchSty le), senderItem.Tag.ToString(), true)), Color.Red, Color.Green);

//draw FillRectangle With hBrush on the Source Item
e.Graphics.FillRectangle(hBrush, senderItem.ClientRectangle);

//Calculate Size Of Text
SizeF textSize = e.Graphics.MeasureString(senderItem.Tag.ToString() .Trim(), this.Font);

int X_Loc = (int)(senderItem.Width - textSize.Width) / 2;
int Y_LOc = (int)(senderItem.Height - textSize.Height) / 2;

//Draw text
e.Graphics.DrawString(senderItem.Tag.ToString().Tr im(), this.Font, new SolidBrush(this.ForeColor), X_Loc, Y_LOc);


کد کامل را هم می توانید در پایان همین پست دانلود کنید.

موفق باشید

sinpin
سه شنبه 03 اردیبهشت 1387, 05:57 صبح
در لینکهای زیر میتوانید آموزشهای مورد نظر خودتون رو بصورت ویدیویی مشاهده و یا دانلود نمایید :

http://asp.net/learn (http://asp.net/learn/)
http://msdn2.microsoft.com/en-us/beginner/default.aspx
http://msdn2.microsoft.com/en-us/beginner/bb308760.aspx
http://msdn2.microsoft.com/en-us/express/aa700759.aspx
http://windowsclient.net/learn (http://windowsclient.net/learn/)
این لیست به مرور تکمیلتر خواهد شد.

hassan razavi
سه شنبه 03 اردیبهشت 1387, 13:16 عصر
Change Resulation


public static void ChangeResolution(int a, int b)
{
Screen screen = Screen.PrimaryScreen;
int iWidth = a;
int iHeight = b;

DEVMODE1 dm = new DEVMODE1();
dm.dmDeviceName = new String(new char[32]);
dm.dmFormName = new String(new char[32]);
dm.dmSize = (short)Marshal.SizeOf(dm);

if (0 != User_32.EnumDisplaySettings(null, User_32.ENUM_CURRENT_SETTINGS, ref dm))
{
dm.dmPelsWidth = iWidth;
dm.dmPelsHeight = iHeight;

int iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_TEST);

if (iRet == User_32.DISP_CHANGE_FAILED)
{
MessageBox.Show("Unable to process your request");
MessageBox.Show("Description: Unable To Process Your Request. Sorry For This Inconvenience.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_UPDATEREGISTRY);

switch (iRet)
{
case User_32.DISP_CHANGE_SUCCESSFUL:
{
break;

//successfull change
}
case User_32.DISP_CHANGE_RESTART:
{

MessageBox.Show("Description: You Need To Reboot For The Change To Happen.\n If You Feel Any Problem After Rebooting Your Machine\nThen Try To Change Resolution In Safe Mode.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
//windows 9x series you have to restart
}
default:
{

MessageBox.Show("Description: Failed To Change The Resolution.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
//failed to change
}
}
}
}
}

gdevnb
چهارشنبه 04 اردیبهشت 1387, 04:17 صبح
روشهای اتصال به بانکهای اوراکل :

Oracle .NET data provider
OLE DB .NET data provider
ODBC .NET data provider

در مثال زیر به تمام راههای بالا اشاره شده است.

using System;
using System.Data.OracleClient;
using System.Data.OleDb;
using System.Data.Odbc;

namespace ConnectOracle
{
class Program Interprocess communication (IPC)
{
static void Main(string[] args)
{
// Connect using .NET data provider for Oracle
string oracleConnectString =
"Data Source=ORCL;User Id=hr;Password=password;";

using (OracleConnection connection =
new OracleConnection(oracleConnectString))
{
connection.Open( );

// Return some information about the server.
Console.WriteLine("---Microsoft .NET Provider for Oracle---");
Console.WriteLine("ConnectionString = {0}\n", oracleConnectString);
Console.WriteLine("State = {0}", connection.State);
Console.WriteLine("DataSource = {0}", connection.DataSource);
Console.WriteLine("ServerVersion = {0}", connection.ServerVersion);
}

// Connect using .NET data provider for OLE DB.
string oledbConnectString =
"Provider=MSDAORA;Data Source=ORCL;User Id=hr;Password=password;";

using (OleDbConnection connection =
new OleDbConnection(oledbConnectString))
{
connection.Open( );

// Return some information about the server.
Console.WriteLine("\n---Microsoft .NET Provider for OLE DB---");
Console.WriteLine("ConnectionString = {0}\n", oledbConnectString);
Console.WriteLine("State = {0}", connection.State);
Console.WriteLine("DataSource = {0}", connection.DataSource);
Console.WriteLine("ServerVersion = {0}", connection.ServerVersion);
}

// Connect using .NET data provider for ODBC
string odbcConnectString = "Driver={Oracle in OraDb10g_home1};" +
"Server=ORCL;uid=hr;pwd=password;";

using (OdbcConnection connection =
new OdbcConnection(odbcConnectString))
{
connection.Open( );

// Return some information about the server.
Console.WriteLine("\n---Microsoft .NET Provider for ODBC---");
Console.WriteLine("ConnectionString = {0}\n", odbcConnectString);
Console.WriteLine("State = {0}", connection.State);
Console.WriteLine("DataSource = {0}", connection.DataSource);
Console.WriteLine("ServerVersion = {0}", connection.ServerVersion);
}

Console.WriteLine("\nPress any key to continue.");
Console.ReadKey( );
}
}
}

روش اول Oracle .NET data provider یا همان Native Oracle:
Oracle .NET data provider با استفاده از OCI(Oracle Call Inteface) و از طریق ابزارهای ارتباطی برای کلاینت (Oracle client connectivity software) به بانکهای اطلاعاتی اوراکل دسترسی دارد.این پروایدر به اوراکل 7.3.4 (یا ورژنهای بالاتر) می تواند دسترسی داشته باشد ,همچنین به Oracle 8i Release 3 (8.1.7) client software (یا ورژنهای بالاتر) نیازدارد.تمام کلاسهای مورد نیاز در فضای نام System.Data.OracleClient قرار دارد

مثالی از رشته اتصال که از Integrated Security استفاده کرده است

Data Source=ORCL;Integrated Security=yes;
و بدون استفاده از Integrated Security

Data Source=ORCL;User Id=hr;Password=password;
معمولاً روش Native بهتر از دو روش دیگر است .چون این این روش مخصوص این نوع بانک اطلاعاتی است و برای آن بهینه شده است(تمام لایه های غیر مرتبط با این نوع دیتا حذف شده است)

روش دوم OLE DB:
در این روش برای دسترسی به بانکهای اطلاعاتی اوراکل از Oracle OLE DB provider (MSDAORA) استفاده می کنیم.

Provider=MSDAORA;Data Source=myOracleDb;User Id=hr;Password=password;

معمولاً از این روش برای ایجاد یک پل ارتباطی با برنامه ای که از OLE DB استفاده می کند , بکار می رود.

روش سوم OLE DB:
و در پایان با استفاده از ODBC .NET data provider نیز می توان به بانکهای اوراکل متصل شد . به عنوان مثال رشته اتصال به بانک اطلاعاتی در Oracle 10g به صورت زیر است.

"Driver={Oracle in OraDb10g_home1};Server=ORCL;uid=hr;pwd=password;";

از این روش نیز برای ایجاد یک پل ارتباطی با برنامه ای که از ODBC استفاده می کند , بکار می رود.
بنابراین در صورت امکان برای اتصال به این بانکها از روش Native استفاده کنید.

نکته:اوراکل از یک فایل پیکر بندی(با نام TNSNAMES.ORA در محل بانک اطلاعاتی)برای تعیین نحوه ارتباط با آن استفاده می کند.
مثالی از محتویات این فایل برای alias ORCL :

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
که این اتصال به طور پیش فرض از ارتباط TCP/IP با پورت 1521 صورت می گیرد.

smt_414
چهارشنبه 04 اردیبهشت 1387, 14:02 عصر
این قطعه کد رو داخل همین بخش دیدم و خاطرم نیست کی زحمتش رو کشیده بود
در صورتیکه مقدار بازگردانده شده از این تابع IsConnectedToInternet برابر true باشد ، سیستم به اینترنت متصل است



using System.Runtime.InteropServices;


//بررسی اتصال به اینترنت
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
//Creating a function that uses the API function...
bool IsConnectedToInternet()
{
bool a;
int Desc;
a=InternetGetConnectedState(out Desc, 0);
return a;
}

danial82
پنج شنبه 05 اردیبهشت 1387, 20:43 عصر
این تیکه کد نیاز به دو DataGrid دارد و از متد SetDataBinding برای پر کردن DataGrid ها استفاده میکند


DataRelation myDataRelation;
myDataRelation = new DataRelation("CustOrd", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]);
// Add the relation to the DataSet.
ds.Relations.Add(myDataRelation);
GridOrders.SetDataBinding(ds,"Customers");
GridDetails.SetDataBinding(ds,"Customers.CustOrd");

http://msdn2.microsoft.com/en-us/library/aa984328(VS.71).aspx

hassan razavi
جمعه 06 اردیبهشت 1387, 22:37 عصر
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true,CallingConvention=CallingConven tion.Winapi)]
public static extern short GetKeyState(int keyCode);


bool isCapsLock = (((ushort) GetKeyState(0x14 /*VK_CAPITAL*/)) & 0xffff) != 0;
bool isNumLock = (((ushort) GetKeyState(0x90 /*VK_NUMLOCK*/)) & 0xffff) != 0;

sinpin
سه شنبه 10 اردیبهشت 1387, 09:08 صبح
How to record voice from microphone?


using Microsoft.VisualBasic.Devices;
using Microsoft.VisualBasic;
using System.Runtime.InteropServices;

تابع API زير را به كلاس برنامه بيافزاييد :

[DllImport("winmm.dll", EntryPoint = "mciSendStringA",
CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]

private static extern int mciSendString(string lpstrCommand,
string lpstrReturnString, int uReturnLength, int hwndCallback);
3 دكمه با نامهاي زير بسازيد :

Record
SaveStop
Read در زمان كليك شدن دكمه Record بنويسيد :

// record from microphone
mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);

و هنگام كليك شدن دكمه SaveStop

// stop and save
mciSendString("save recsound c:\\record.wav", "", 0, 0);
mciSendString("close recsound ", "", 0, 0);
Computer c = new Computer();
c.Audio.Stop();
و براي دكمه Read نيز :

Computer computer = new Computer();
computer.Audio.Play("c:\\record.wav", AudioPlayMode.Background);
منبع : http://www.dotnetspider.com/resources/4967-How-record-voice-from-microphone.aspx

sinpin
سه شنبه 10 اردیبهشت 1387, 09:35 صبح
Generating Random Number and String

private string GenerateRandomString(int size)
{
Random r = new Random();
string legalChars = "1234567890";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < size; i++)
sb.Append(legalChars.Substring(r.Next(0, legalChars.Length - 1), 1));
return sb.ToString();
}مثال زير در هر بار كليك دكمه يك رشته ي تصادفي و 6 رقمي از اعداد را نمايش ميدهد:

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(GenerateRandomString(6));
}
جهت تغيير دادن حروف رشته، متغير legalChars را تغيير دهيد. مثلا براي تركيب حروف بزرگ با اعداد :

string legalChars = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";منبع :‌ http://www.c-sharpcorner.com/UploadFile/mahesh/RandomNumber11232005010428AM/RandomNumber.aspx

sinpin
سه شنبه 10 اردیبهشت 1387, 11:23 صبح
simulate mouse click on a control

private const UInt32 WM_LBUTTONDOWN = 0x201;
private const UInt32 WM_LBUTTONUP = 0x202;

[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr handle,
UInt32 message,int wParam,int lParam);


public static void SendClick(Control receiver)
{
if (receiver != null)
{
SendMessage(receiver.Handle, WM_LBUTTONDOWN, 0, 0);
SendMessage(receiver.Handle, WM_LBUTTONUP, 0, 0);
}
} مثال :

private void button1_Click(object sender, EventArgs e)
{
SendClick(button2);
}

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("2");
}منبع : http://www.dotnet247.com/247reference/msgs/15/78924.aspx

hassan razavi
جمعه 13 اردیبهشت 1387, 13:11 عصر
ذخیره DataGrid در اکسل Excel

ابتدا در Add Reference و در تب Com گزینه های زیر را add کنید
1- Microsoft Excel 11 object Lib
Microsoft Office 11 object lib 2-


Excel.ApplicationClass excel = new ApplicationClass();
excel.Application.Workbooks.Add(true);
int ColumnIndex = 0;
foreach (DataGridViewColumn col in dgv.Columns)
{
ColumnIndex++;
excel.Cells[1, ColumnIndex] = col.HeaderText;

}
int rowIndex = 0;
string val;

pb.Maximum = dgv.Rows.Count;
foreach (DataGridViewRow row in dgv.Rows)
{
rowIndex++;
ColumnIndex = 0;
foreach (DataGridViewColumn col in dgv.Columns)
{
ColumnIndex++;
if (row.Cells[ColumnIndex - 1].Value == null)
val = "";
else
val = row.Cells[ColumnIndex - 1].Value.ToString();
excel.Cells[rowIndex + 1, ColumnIndex] = val;

}
}
excel.Visible = true;

Mahdi.Kiani
سه شنبه 17 اردیبهشت 1387, 10:42 صبح
توسط متد زیر می تواند رشته عددی خالص را از هر رشته ای که حاوی کاراکتر های غیر عددی است به دست آورد.



private String TrimToNumber(String text)
{
StringBuilder sb = new StringBuilder();
foreach (char c in text)
{
if (char.IsDigit(c))
sb.Append(c);
}
return sb.ToString();
}




مثال




string text = "-0-#$%t123^456j7j8j9j";

MessageBox.Show(TrimToNumber(text));




خروجی مثال بالا =0123456789

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

mohammad272005
یک شنبه 22 اردیبهشت 1387, 23:59 عصر
يه تابع ساده واسه اينكه ببينيم ورودي int هست يا نه؟

#region IsInteger

///<summary>
/// Checks whether the give text is integer.
///</summary>
///<param name="text">The text to be checked.</param>
///<returns>true if text is integer</returns>
public static bool IsInteger(this string text)
{
int num;
return int.TryParse(text, out num);
}

#endregion


يه تابع ساده واسه اينكه ببينيم ورودي int يا كنترلي (مثل enter) هست يا نه؟

#region IsInetegerOrControl

///<summary>
/// Checks whether the give text is one of integer or control, or not.
///</summary>
/// <param name="text">The text to be checked.</param>
/// <returns>true if text is integer or control</returns>
public static bool IsInetegerOrControl(this string text)
{
int num;
if (!int.TryParse(text, out num)) return true;
foreach (char chr in text)
{
if (!char.IsControl(chr))
return false;
}
return true;
}

#endregion


از بين بردن فضاهاي خالي تو يه آرايه

#region Compact

///<summary> ///
/// Eleminates all null or nullstrings in string array
///</summary>
/// <param name="strings">String array to compact</param>
/// <returns>Compacted string array</returns>
public static string[] Compact(params string[] strings)
{
return strings.Where(item => string.IsNullOrEmpty(item)).ToArray();
}

#endregion


آيا ورودي unicode هست؟

#region IsUnicode

///<summary> ///
/// Checks whether the given text is unicode or not.
/// </summary>
/// <param name="str">The text to be checked.</param>
/// <returns>returns true if text is unicode.</returns>
public static bool IsUnicode(this string str)
{
byte[] unicodeBytes = System.Text.Encoding.Unicode.GetBytes(str);
for (int i = 1; i < unicodeBytes.Length; i += 2) if (unicodeBytes[i] != 0) return true;
return false;
}

#endregion


تبديل به unicode:

#region ToUnicode

///<summary>
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ToUnicode(this string str)
{
return Encoding.Unicode.GetString(Encoding.Unicode.GetByt es(str));
}

#endregion



-- لطفا نكات رو بصورت ماژولوار (هر نكته در يك پست) بهمراه عناوين گويا ارسال نماييد. --
با تشكر
sinpin

mohammad272005
دوشنبه 23 اردیبهشت 1387, 21:11 عصر
بنا به فرمايش يكي از دوستان عزيز:
براي override كردن يه متد virtual تو محيط VS، كلمه override رو بنويسيد و يه space بزنيد. اگه عضو virtualي وجود داشته باشه interllisence مياردش. حالا فقط كافيه انتخابش كنيد تا اونو براتون override كنه. ميدونيد كه تمام classهايي كه به هر نحوي در #C ايجاد ميشن (چه توسط ما چه توسط NET.) تلويحا از كلاس Object ارث مي برن. و همينطور ميدونيد در كلاس Object متدهاي Equals، GetHashCode، و ToString بصورت virtual تعريف شدن. پس ما هميشه ميتونيم اين متدها رو override كنيم. متد ToString كه ميدوني. 100تا كاربرد داره يكيش مال موقعه‏ايه كه شما داريد مقدار يه متغير رو توي quick watch نگاه مي كنيد. با override كردن ToString توي classهاتون مي تونيد اونچه خودتون دلتون ميخواد رو اونجا ببنيد. متدهاي GetType و Equals رو هم توي يه مثال نه چندان optimize شده نشون مي دم:

private int _CoreData;

public override bool Equals(object obj)
{
if (obj == null) return false;
if (obj.GetType() != this.GetType()) return false;
if ((obj as Program)._CoreData != this._CoreData) return false;
return true;
}

Mahdi.Kiani
چهارشنبه 25 اردیبهشت 1387, 16:28 عصر
public class Logger
{
private EventLog _EventLog;
public string _Source { get; set; }
public string _Log { get; set; }

public Logger(string SourceName)
{
_EventLog = new EventLog();
_Source = SourceName;

if (!EventLog.SourceExists(_Source))
{
EventLog.CreateEventSource(_Source, _Log);
}
_EventLog.Source = _Source;
}

public void Add(string Message,
System.Diagnostics.EventLogEntryType eType)
{
_EventLog.WriteEntry(Message, eType);
}

public void AddError(string Message)
{
Add(Message, System.Diagnostics.EventLogEntryType.Error);
}

public void AddWarning(string Message)
{ Add(Message, System.Diagnostics.EventLogEntryType.Warning);
}

public void AddInformation(string Message)
{
Add(Message,
System.Diagnostics.EventLogEntryType.Information);
}
}



نحوه استفاده:




Logger Log = new Logger("CSTips");
Log.AddError("Error message");
Log.AddInformation("Informational message");
Log.AddWarning("Warning message");




منبع (http://www.codeguru.com/csharp/.net/net_general/eventsanddelegates/article.php/c15133)

سار
یک شنبه 29 اردیبهشت 1387, 14:04 عصر
با فرض اينكه lstTerm ليستي از كلاس Term است مي خواهيم ترمي را پيدا كنيم كه Id آن برابر با 88-87 باشد.
lstTerms.Find(delegate(Term t) { return t.Id = "87-88"; });

hassan razavi
سه شنبه 31 اردیبهشت 1387, 11:03 صبح
در یک پروژه که نیاز به اعلام شماره ها بصورت گویا داشتم ، بعد از ظبط صدای اعداد ، برای اینکه فایلها رو پشت سر هم پخش کنم 2 تا مشکل اساسی داشتم.
1- ایجاد تاخیر در پخش اعداد بعدی (مثلا 120 رو بعد از پخش "یکصد و " یه مکثی ایجاد میشد تا بره سراغ فایل "بیست"
2-تشخیص اینکه کی یکصدو تمام میشه تا بیست صدا زده بشه سخت بود.

خلاصه به این نتیحه رسیدم که فایلهای Wave رو بهم بچشبونم و بصورت یک فایل Temp در بیارم و پخش کنم.
کلاس زیر رو پیدا کردم که خیلی عالیه و راحته. برای شروع 2 فایل رو بهم میچسبونه که به سادگی قابل افزایش به n فایل هست.

Mahdi.Kiani
شنبه 04 خرداد 1387, 18:41 عصر
تبدیل به یونیکد


String ucode = String.Format("{0:x4}", (int)('a'));
// ucode = 0061


تبدیل به اسکی


String acode = (((int)('a')).ToString());
//acode=97

Mahdi.Kiani
چهارشنبه 08 خرداد 1387, 19:38 عصر
توسط متد زیر می توانید مستقیما برنامه outlook ویندوز را باز کرده و مکان های مناسب ان را مقدار دهی کنید




private static void SendMail(String mailto,String cc,String subject,String body)
{

String command = String.Format("mailto:{0}?cc={1}&subject={2}&body={3}", mailto, cc, subject, body);
System.Diagnostics.Process.Start(command);
}



یک مثال




private void button1_Click(object sender, EventArgs e)
{
SendMail("rkiani88@yahoo.com","rkiani88@hotmail.com",
"this a sample subject for sample mail",
"Hi All, this is a sample code for sending parameters to outlook exprees");
}



نتیجه اجرا


http://i32.tinypic.com/15clsfn.png


نکته:
bcc را نیز می توانید خودتان به متد فوق اضافه کنید
موفق باشید

Sajjad.Aghapour
سه شنبه 14 خرداد 1387, 14:21 عصر
برای دسترسی به فایلهای صوتی داخل Resource و پخش کردن اونها نمیشه مانند دسترسی به bitmap ها یا .... عمل کرد.برای این کار میشه طبق مثال زیر عمل کرد.....
این مثال واسه وقتیه که یک فایل wav در resource وجود داشته باشه.برای فایل های بیشتر میشه از ArrayList استفاده کرد....
اضافه کردن namespace ها:



using System.Reflection;
using System.IO;
using System.Media;
using System.Runtime.InteropServices;



اضافه کردن dll مربوط به Windows Media Player :



[DllImport("Winmm.dll")]
private static extern bool PlaySound(byte[] data, IntPtr hMod, UInt32 dwFlags);
private const UInt32 SND_ASYNC = 1;
private const UInt32 SND_MEMORY = 4;



کدهای مربوطه:


private Assembly a = Assembly.GetExecutingAssembly();
private string _sound = string.Empty;
private Stream stream;
private Int32 length;
private byte[] _data;

foreach (string resourceName in a.GetManifestResourceNames())
if (Path.GetExtension(resourceName).ToLower() == ".wav")
_sound = resourceName;
stream = a.GetManifestResourceStream(_sound);
length = (Int32)stream.Length;
_data = newbyte[length];
stream.Read(_data, 0, length);
PlaySound(_data, IntPtr.Zero, SND_ASYNC | SND_MEMORY);

combo_ci
سه شنبه 14 خرداد 1387, 15:58 عصر
private void CalculateWideOfColomn(Graphics g)
{
SizeF tmpSize = new SizeF();
for (int i = 0; i <= dataGridView1.Columns.Count - 1; i++)
{
Font tmpFont = dataGridView1.DefaultCellStyle.Font;
tmpSize = g.MeasureString(dataGridView1.Columns[i].HeaderText, tmpFont);
float tmpWidth = tmpSize.Width;
float RowHeaderHeight = tmpSize.Height;
for (int j = 0; j <= dataGridView1.Rows.Count - 1; j++)
{
tmpSize = g.MeasureString("HELLO", tmpFont);
tmpSize = g.MeasureString(dataGridView1.Rows[j].Cells[i].EditedFormattedValue.ToString(), tmpFont);
if (tmpSize.Width > tmpWidth)
{
tmpWidth = tmpSize.Width;
}
}
if (dataGridView1.Columns[i].Visible)
dataGridView1.Columns[i].Width = (int)tmpWidth;
}
}

سار
یک شنبه 19 خرداد 1387, 12:48 عصر
شايد براتون پيش بياد كه بخواهيد به فايل WEB.Config و يا App.Config در CLR دسترسي پيدا كنيد.
اگر بخواهيد با استفاده از منوي Add Reference اين كار رو انجام بديد خواهيد ديد كه در فهرست Referenceها خبري از System.configuration نيست.
براي اينكار بايد فايل پروژه ي خودتون رو كه ميتونه پسوند vbproj و يا csproj داشته باشه (بسته به اينكه با #C و يا VB نوشته شده) رو تو يك Editor متني باز كنيد و در بخش ItemGroup خط زير رو اضافه كنيد :

<Reference Include="System.configuration" />فايل رو ذخيره كنيد و پروژه رو دوباره باز كنيد.

حالا مي تونيد به Application Configuration دسترسي داشته باشيد.

sinpin
یک شنبه 26 خرداد 1387, 11:40 صبح
add a custom paper size (a printer form) to the default printer and set the printer to use the custom paper size
به سورس كد ضميمه شده مراجعه كنيد.

برگرفته از : http://www.codeproject.com/KB/printing/custom_paper_sizes.aspx

sinpin
دوشنبه 27 خرداد 1387, 14:28 عصر
programmatically associate a file type on the system with your application

زماني كه ميخواهيد با دابل كليك كردن بر روي آيكن يك نوع خاص از فايلها (با پسوند دلخواه) آنها در برنامه شما باز شوند و ...

برگرفته شده از :‌ http://www.codeproject.com/KB/dotnet/System_File_Association.aspx

sinpin
چهارشنبه 29 خرداد 1387, 09:25 صبح
How to programmaticaly control and change status of MS SQL Server service or others
ابتدا اسمبلي System.ServiceProcess.dll را به قسمت References پروژه ي خود بيافزاييد و سپس :

System.ServiceProcess.ServiceController sc =
new System.ServiceProcess.ServiceController("MSSQLSERVER");براي stop, start و يا pause كردن سرويس :

sc.Stop();
sc.Pause();
sc.Start();و براي بدست آوردن حالت فعلي سرويس :

sc.Statusبه كمك كلاس ServiceController قادريد كه ساير سرويسهاي ويندوز را نيز - بسته به داشتن مجوز لازم - كنترل نماييد.

mdssoft
چهارشنبه 12 تیر 1387, 05:57 صبح
اول یه لیست درست می کنیم و اون رو با رشته های 0 تا 100 پر می کنیم .
حالا می خواهیم با LINQ رشته های بزرگتر از 90 رو توی لیستمون پیدا کنیم :

List<int> list = new List<int>();

for (int i = 0; i <= 100; i++)
list.Add(i);

var find = (from item in list
where item > 90
select item);

foreach (var value in find)
Console.WriteLine(value);

رافعی مهدی
دوشنبه 17 تیر 1387, 10:07 صبح
چنانچه براي انجام كارهاي گرافيكي خود از مجموعه ي +GDI استفاده مي كنيد، بسيار محتمل است كه به هنگام انجام اعمال گرافيكي سنگين مثل Pan و Zoom تصوير يا ترسيمات گرافيكي با پرش يا چشمك زدن هاي متوالي مواجه شويد. براي رفع اين مشكل مي توانيد خاصيت DoubleBuffered مربوط به Form يا UserControl اي كه در آن ترسيمات انجام مي گيرند را true كنيد.
براي اطلاعات بيشتر در MSDN به ايندكس double buffering مراجعه كنيد.

sinpin
پنج شنبه 20 تیر 1387, 14:37 عصر
Get a list of installed software in C#

private string Getinstalledsoftware()
{
string Software = null;

string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstal l";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey))
{
foreach (string skName in rk.GetSubKeyNames())
{
using (RegistryKey sk = rk.OpenSubKey(skName))
{
try
{
if (!(sk.GetValue("DisplayName") == null))
{
if (sk.GetValue("InstallLocation") == null)
Software += sk.GetValue("DisplayName") + " - Install path not known\n"; //Nope, not here.
else
Software += sk.GetValue("DisplayName") + " - " + sk.GetValue("InstallLocation") + "\n"; //Yes, here it is...
}
}
catch (Exception ex)
{
//No, that exception is not getting away... :P
}
}
}
}
return Software;
}منبع : http://www.dreamincode.net/code/snippet1995.htm

sinpin
پنج شنبه 20 تیر 1387, 14:42 عصر
Check for internet connection in C#

public bool isConnectionAvailable()
{
//build a list of sites to ping, you can use your own
string[] sitesList = { "www.google.com", "www.microsoft.com" , "www.psychocoder.net" };
Ping ping = new Ping();
PingReply reply;
bool _success = false;
int notReturned = 0;
try
{
for (int i = 0; i <= sitesList.Length; i++)
{
reply = ping.Send(sitesList[i], 10);
if (reply.Status != IPStatus.Success)
{
notReturned += 1;
}
if (notReturned == sitesList.Length)
{
_success = false;
throw new Exception(@"There doest seem to be a network/internet connection.\r\n
Please contact your system administrator");
}
else
{
_success = true;
}
}
}

catch
{
_success = false;
}
return _success;
}

منبع : http://www.dreamincode.net/code/snippet1568.htm

sinpin
پنج شنبه 20 تیر 1387, 14:46 عصر
Get current DataRow from a DataGridView instance.

public DataRow GetCurrentRow(DataGridView dgv)
{
DataRowView drv = null;
try
{
if (dgv.CurrentRow == null) { return null; }
if (dgv.CurrentRow.DataBoundItem == null) { return null; }
drv = (DataRowView)dgv.CurrentRow.DataBoundItem;
}
catch
{
return null;
}
return drv.Row;
}
منبع : http://www.dreamincode.net/code/snippet1435.htm

sinpin
پنج شنبه 20 تیر 1387, 14:50 عصر
representation of the amount of time the computer has been on since the OS started.

public string getUptime()
{
String strResult = String.Empty;
strResult += Convert.ToString(Environment.TickCount / 86400000) + " days, ";
strResult += Convert.ToString(Environment.TickCount / 3600000 % 24) + " hours, ";
strResult += Convert.ToString(Environment.TickCount / 120000 % 60) + " minutes, ";
strResult += Convert.ToString(Environment.TickCount / 1000 % 60) + " seconds.";
return strResult;
}

منبع : http://www.dreamincode.net/code/snippet1555.htm

sinpin
شنبه 29 تیر 1387, 01:13 صبح
Directly Execute SQL Queries (LINQ to SQL)

شما ميتوانيد صرفنظر از تواناييهاي LINQ To SQL كوئريهاي دلخواه خود را مستقيم براي SQL Server ارسال نماييد :

Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
(@"SELECT c1.custid as CustomerID, c2.custName as ContactName
FROM customer1 as c1, customer2 as c2
WHERE c1.custid = c2.custid"
);منبع : http://msdn.microsoft.com/en-us/library/bb399403.aspx

tthenry14plus
دوشنبه 14 مرداد 1387, 01:45 صبح
Microsoft.VisualBasic.Devices.Keyboard keyboard = new Microsoft.VisualBasic.Devices.Keyboard(); string COnOff = keyboard.CapsLock ? "On" : "Off"; string NOnOff = keyboard.NumLock ? "On" : "Off"; string SOnOff = keyboard.ScrollLock ? "On" : "Off"; MessageBox.Show("Caps Lock is " + COnOff + "\nNum Lock is " + NOnOff + "\nScroll Lock is " + SOnOff);

hozouri
دوشنبه 14 مرداد 1387, 14:30 عصر
با سلام و خسته نباشید
من امروز یک فایل برای دانلود گذاشتم که چند امکان جدید C# 3.0 رو بیان می نماید.
نکته های بارز C# 3.0

tthenry14plus
سه شنبه 15 مرداد 1387, 19:17 عصر
گاهی میخواهیم فقط یک نمونه از یک فرم اجرا شود.
برای اینکار تابعی نوشتم که در هنگام باز کردن فرم نام فرممان را به تابع ارسال میکنیم، اگر فرم بسته باشد که آنرا باز میکند اما اگر باز باشد آنرا به اولین لایه ممکن انتقال میدهد.
تابع:


Boolean IsRunning(string formName)
{
foreach (Form frm inApplication.OpenForms)
{
if ((frm.Name == formName))
{
frm.BringToFront();
return true;
}
}
returnfalse;
}

مثال از نحوه استفاده:


privatevoid OpenForm2_Click(object sender, EventArgs e)
{
Form2 af = newForm2();
if (!IsRunning("Form2"))
af.Show();
}

سار
چهارشنبه 23 مرداد 1387, 07:47 صبح
تبدیل مبنا با استفاده از Convert.ToString
پارامتر اول عدد شما است و پارامتر دوم مبنای مورد نظر که میتواد 2،8،10 و 16 باشد


long a = 999999999999999999;
string b = Convert.ToString(a, 2);
Console.WriteLine(b);
Console.WriteLine(Convert.ToString(a, 8));
Console.WriteLine(Convert.ToString(a, 16));
Console.ReadKey();

sinpin
چهارشنبه 23 مرداد 1387, 10:09 صبح
براي مثال در تيكه كد زير دو متود Method1 و Method2 اجرا ميشوند :

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public void Method1()
{
MessageBox.Show("Method1 invoked");
}

public void Method2()
{
MessageBox.Show("Method2 invoked");
}


private void Form1_Load(object sender, EventArgs e)
{
MethodInvoke();
}

private void MethodInvoke()
{
Type t = typeof(Form1);
int i = 0;

i++;
string MethodName = "Method" + i.ToString();
t.InvokeMember(MethodName, BindingFlags.Default | BindingFlags.InvokeMethod, null, this, null);

i++;
MethodName = "Method" + i.ToString();
t.InvokeMember(MethodName, BindingFlags.Default | BindingFlags.InvokeMethod, null, this, null);

}
}

Mahdi.Kiani
جمعه 25 مرداد 1387, 00:53 صبح
اینترفیس مذکور دارای یک رویداد به نام PropertyChangedr می باشد.
توسط این رویداد می توانید، رویدادی در کلاس خود داشته باشید که بتوانید تشخیص دهید که کدام یک از property ها مقدار آن تغییر کرده است.
در واقع به صورت اتواتیک کلاینت شما متوجه خواهد شد که داده تغییر کرده است
مثال




class Student : System.ComponentModel.INotifyPropertyChanged
{
private string name;

public string Name
{
get
{
return name;
}
set
{
if (value != name)
{
name = value;
OnPropertyChanged("Name");
}
}
}

private string family;

public string Family
{
get
{
return family;
}
set
{
if(value != family)
{
family = value;
OnPropertyChanged("Family");
}
}
}


#region INotifyPropertyChanged Members

public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

#endregion


void OnPropertyChanged(string propertyName)
{

if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(pro pertyName));
}
}
}



آرگومان e ، دارای خاصیتی به نام PropertyName می باشد، که توسط آ ن ، نام property که مقدار آن تغییر کرده استرا می توانید بدست آورید.
به نحوه raise کردن این ایونت درپروپرتی ها دقت کنید

Salar Ashgi
دوشنبه 11 شهریور 1387, 14:02 عصر
کدی که از فرمول ریاضی زیر پیروی میکنه :

http://i34.tinypic.com/15yi1w3.jpg

کد برنامه تقدیم شما عزیزان :

private void button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(textBox1.Text);
// Number 1
int b = Convert.ToInt32(textBox2.Text);
// Number 2
double res = Math.Pow(Math.E, b*Math.Log(a, Math.E));
// Result of Power
MessageBox.Show("Result of Power is = " + res.ToString());
}

-- ويرايش شده -- با تشكر از همكاري شما : جهت نظم بيشتر لطفا امضا را حذف و عنوان نكته را درج نماييد.

Salar Ashgi
دوشنبه 11 شهریور 1387, 14:12 عصر
private void textBox1_TextChanged(object sender, EventArgs e)
{
string str = textBox1.Text;
int f=0;
foreach (char c in str)
{
if (char.IsDigit(c) == true)
f++;
else
f--;
}
if (f != str.Length)
{
MessageBox.Show("Error");
textBox1.Clear();
}
}

رضا عربلو
چهارشنبه 13 شهریور 1387, 14:44 عصر
اضافه کردن شماره سطر به دیتا گرید ویو
در اونت RowPostPaint اگر دیتا گرید ویو تان RightToLeft بود بنویسید


using (SolidBrush b = new SolidBrush(Color.Black))
{
e.Graphics.DrawString((e.RowIndex).ToString(),
e.InheritedRowStyle.Font, b,
(sender as DataGridView).Width - e.RowBounds.Location.X - 15,
e.RowBounds.Location.Y + 4);
}

و اگر چپ به راست بود بنویسید


using (SolidBrush b = new SolidBrush(Color.Black))
{
e.Graphics.DrawString((e.RowIndex).ToString(),
e.InheritedRowStyle.Font, b,
e.RowBounds.Location.X + 15,
e.RowBounds.Location.Y + 4);
}

Salar Ashgi
پنج شنبه 14 شهریور 1387, 16:18 عصر
DateTime mytime = newDateTime();
string time;
mytime = DateTime.Now;
time = mytime.ToString("F");
MessageBox.Show(time);


موفق و پیروز باشید !!!!

Salar Ashgi
جمعه 15 شهریور 1387, 23:00 عصر
سلام دوستان ، این برنامه که نوشتم ، رشته های تصادفی بصورت کاملا دستی ، تولید

میکنه با هر طولی و بدون استفاده از امکانات سی شارپ !!!!

public string txt_Generator(int size)
{
int[] a = new int[size];
Random rnd = new Random();
for (int i = 0; i < size; i++)
{
a[i] = 65 + rnd.Next() % 26;
}
string str = "";
foreach (int j in a)
{
str += (char)(j);
}
return str;
}


موفق و پیروز باشید !!!

danial82
چهارشنبه 20 شهریور 1387, 22:13 عصر
انتخاب و فعال شدن یک سطر در dataGridView با مقدار خاص


for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{

if (dataGridView1.Rows[i].Cells[ ایندکس ستون مورد جستجو].Value.ToString() == "مقدار مورد نظر")
{
dataGridView1.Rows[i].Selected = true;
}
}



for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{

if (dataGridView1.Rows[i].Cells[2].Value.ToString() == "Johnson")
{
dataGridView1.Rows[i].Selected = true;
}
}

Esmail Solhkhah
یک شنبه 24 شهریور 1387, 04:41 صبح
خیلی وقتا نیاز داریم تو فرمهایی که به نحوی از دیتا گرید استفاده کردن به کاربر اجازه بدیم بتونه اونا رو چاپ کنه !
فایل ضمیمه حاوی یه کلاس هست که به عنوان سازنده دیتا گرید رو میگیره و میتونه با دومتد یا چاپ کنه یا پیش نمایش رو نشون بده
در ضمن امکانات دیگه ای هم مثل نوشتن متن رو هدر گزارش و .. داره که اونا رو هم تو فایل ضمیمه قرار دادم. تو فایل Usage.txt

mary3541
دوشنبه 25 شهریور 1387, 15:37 عصر
پاک کردن هم زمان تمام TextBox ها :
بعضی وقتا تعداد TextBox ها توی فرمتون خیلی زیاده و سخته که هر بار تمام اونها رو پاک کنید پس از روش زیر استفاده کنید تا تمام TextBox ها را یکجا Clear کنید.



public void ClearTextBoxs()
{
foreach (Control txt in this.Controls)
{
if (txt.GetType().Name == "TextBox")
txt.Text = "";
}
}



http://www.projeha.blogfa.com/

mary3541
دوشنبه 25 شهریور 1387, 15:47 عصر
شاید شما هم وقتی در .NET برنامه نویسی گرافیکی می کنید به این مشکل بر خورده باشید.
وقتی می خواهید روی یک فرم یا هر کنترل دیگری چیزی رسم کنید ابتدا با استفاده از متد CreateGraphics ان را صدا می زنید و سپس چیزی روی آن رسم می کنید. یعنی:




Graphics gr = form1.CreateGraphics();
// you draw something here


ولی پس از رسم مشاهده می کنید که به یک بار رفت و آمد صفحه همه چیز پاک شده است .
برای حل این مشکل کافیست به صورت زیر عمل کنید :




Bitmap bmp = new Bitmap(from1.Width, form1.Height);
Graphics gr = Graphics.FromImage((Image)bmp);
gr.Clear(Color.White);
// draw something in gr
gr.dispose();
form1.BackgroundImage = bmp;



منبع : http://valipour.blogfa.com

mary3541
دوشنبه 25 شهریور 1387, 15:49 عصر
string s;
foreach (InputLanguage Language in InputLanguage.InstalledInputLanguages)
{
s = Language.LayoutName;
listBox1.Items.Add(s);
}

http://www.projeha.blogfa.com/

mary3541
دوشنبه 25 شهریور 1387, 20:28 عصر
23210

منبع: برنامه نویس (http://www.programmer07.ir/)

m110_110
چهارشنبه 27 شهریور 1387, 12:20 عصر
عمل چک باکس مثل رادیو باتون


privatevoid checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
{
checkBox1.Checked = false;
//و بقیه
}
}
privatevoid checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
checkBox2.Checked = false;
}
}

sinpin
یک شنبه 07 مهر 1387, 09:31 صبح
با فرض داشتن ليستي از اعداد مانند :

private List<int> numbers = new List<int> { 2, 12, 4, 6, 11 };ميتوانيم بنويسيم :

numbers = numbers.OrderBy(i => System.Guid.NewGuid()).ToList<int>();

nathan
دوشنبه 08 مهر 1387, 09:48 صبح
براي ايجادمحدوديت درنوع پذيرش كاراكتر دريك TextBoxمي توان از دورويداد keypress و keydown به اين صورت استفاده كرد.
به عنوان مثال فقط مي خواهيم اعدادپذيرفته شوند:
تعريف يك متغيرboolean درسطح فرم:


bool KeyHandle = false;


رخداد keydown :


private void Numeric_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode == Keys.Back) || (e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9))
KeyHandle = false;
else
KeyHandle = true;
}


حال دررخداد KeyPress براساس محتواي منطقي متغير رخدادراHandle مي كنيم:



private void Numeric_KeyPress(object sender, KeyPressEventArgs e)
{
if (KeyHandle == true)
{
e.Handled = true;
}
}

piroozman
سه شنبه 09 مهر 1387, 18:21 عصر
براي ايجادمحدوديت درنوع پذيرش كاراكتر دريك TextBoxمي توان از دورويداد keypress و keydown به اين صورت استفاده كرد.

به منظور دریافت فقط کاراکتر عدد در کنترلهای ویرایشی می توانید از کد زیر استفاده کنید. با استفاده از این کد معیین می کنید که کنترل ویرایشی مورد نظر شما فقط عدد صحیح (غیر منفی) دریافت می کند یا مجوز درج و دریافت علامت ممیز (.) را نیز دارد یا خیر؟ برای اینکار یک کلاس استاتیک با نام Tools که سه مقدار استاتیک از (یک نوع String و دو نوع bool) ایجاد شده است.


static class Tools
{
// Boolean flag used to determine when a character other than a number is entered.
private static bool nonNumberEntered = false;
public static string text="0";
public static bool isDecimalAllow=false;
//تابع زیر نوع کاراکتر ارسال شده به تاکس باکهاسی مشخص شده توسط شما را تعیین می کند
public static void DetermineTypeOfCharacter(object sender, KeyEventArgs e)
{
if (isDecimalAllow)
goto decimalAllow;
else goto decimalNotAllow;

decimalAllow:
if (text.Contains("."))
{
// Initialize the flag to false.
nonNumberEntered = false;
// Determine whether the keystroke is a number from the top of the keyboard.
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
// Determine whether the keystroke is a number from the keypad.
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
// Determine whether the keystroke is a backspace.
if (e.KeyCode != Keys.Back)
{
// A non-numerical keystroke was pressed.
// Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = true;
return;
}
}
}
}
else
{
nonNumberEntered = false;
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
// Determine whether the keystroke is a backspace.
if (e.KeyCode != Keys.Back)
{
//Determine whether the keystroke is a Decimal.
if (e.KeyCode != Keys.Decimal)
// A non-numerical keystroke was pressed.
// Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = true;
return;
}
}
}
}
decimalNotAllow:
nonNumberEntered = false;
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
if (e.KeyCode != Keys.Back)
{
nonNumberEntered = true;
return;
}
}
}
}
//تابع زیر از ورود کاراکترهای غیر مجاز در داخل تکس باکسهای مورد نظر شما جلوگیری می کند
public static void PreventCharacterEnter(object sender, KeyPressEventArgs e)
{
// Check for the flag being set in the KeyDown event.
if (nonNumberEntered == true)
{
// Stop the character from being entered into the control since it is non-numerical.
e.Handled = true;
System.Media.SystemSounds.Beep.Play();

}
}
در کد فوق دو تابع استاتیک DetermineTypeOfCharacter(object sender, KeyEventArgs e) و public static void PreventCharacterEnter(object sender, KeyPressEventArgs e) نیز وجود دارد. خوب فقط لازم است برای هر کنترل ویرایشی مانند TextBOx مقادیر مورد نظر خود را ست کرده(مقدار اساتیک Tools.text جهت ارسال تکس موجود در کنترل ویرایشی و تعیین مقدار true یا false برای مقدار استاتیک (Tools.isDecimalAllow و در رویداد keyDown کنترل مورد نظر خود تابع DetermineTypeOfCharacter(object sender, KeyEventArgs e) و در رویداد keyPress نیز تابع دوم یعنی public static void PreventCharacterEnter(object sender, KeyPressEventArgs e) را صدا بزنید. توجه داشته باشید که دو مقدار استاتیک text از نوع string و isDecimalAllow از نوع بولین را جهت مجوز دریافت علامت ممیز (.) یا عدم مجوز آن در رویداد keyDown (مشابه با کد زیر) ست کنید:



private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
Tools.text = this.modifyNumberTextBox.Text;
Tools.isDecimalAllow = false;
Tools.DetermineTypeOfCharacter(sender, e);
}

private void modifyNumberTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
Tools.PreventCharacterEnter(sender, e);
}
از مقدار nonNumberEntered که از نوع bool است جهت چک کردن مقدار معتبر استفاده می شود. در کد فوق از دو lable و دستور goto نیز استفاده شده است.
ضمناً برای زیبایی کار در صورت عدم ورود کاراکتر صحیح در کنترل ویرایشی مورد نظر با استفاده از کد زیر در رویداد استاتیک public static void PreventCharacterEnter(object sender, KeyPressEventArgs e) صدای Beep هشدار لازم را به کاربر اعلام می کند:


System.Media.SystemSounds.Beep.Play();

مهران رسا
شنبه 13 مهر 1387, 23:34 عصر
سلام
VS این امکان رو به شما میده که کدی که از اون زیاد استفاده می کنید رو به ToolBox اضافه کنید تا در مواقع بعدی با یک دابل کلیک ساده بتونید ازش استفاده کنید .

برای اینکار کافیه در پنجره کدنویسی ، قطعه کد مورد نظرتون رو انتخاب کرده و اون رو به Toolbox درگ کنید . همچنین با Right Click روی گزینه اضافه شده و انتخاب Rename Item می تونید نام قطعه کد مورد نظر رو تغییر بدید .

Salar Ashgi
یک شنبه 21 مهر 1387, 14:09 عصر
مثالی ساده از LINQ ، که از یک آرایه اعداد زوج را انتخاب میکند :



int[] a = { 2, 1, 3, 6, 5, 8 };
var QResults = from n in a
where n % 2 == 0
select n;
string s = "";
foreach (var item in QResults)
{
s += item.ToString()+"\n";
}
MessageBox.Show(s);


موفق و پیروز باشید !!!!

danial82
پنج شنبه 23 آبان 1387, 21:28 عصر
سلام
یه سری pdf درمورد :

1- در مورد ساخت فرم های شفاف

2- استفاده از فایلهای فلش در #C

3- گرفتن Backup و Restore کردن دیتابیس

4- پخش فایل های صوتی تصویری به وسیله Windows Media Player

razavi_university
پنج شنبه 30 آبان 1387, 23:54 عصر
بهتر است هميشه پروژه‌هاي خود را مستند سازي كنيم تا زماني كه به دلايل مختلف نياز به تغيير يا استفاده مجدد آنها باشد بتوانيم به راحتي كدها و قسمتهاي مختلفي كه نوشته ايم را سريعا به ياد آوريم يا مرور كنيم. براي اينكار ابزارهاي بسيار زيادي وجود دارد اما برخي از آنها كاربردي و مفيدند. اين جدول كه در سايت WikiPedia وجود دارد مقايسه جالبي را بين اين برنامه ها و امكاناتي كه ارائه مي‌كنند نشان داده است.
Comparison of documentation generators (http://en.wikipedia.org/wiki/Comparison_of_documentation_generators)



For Code


Doxygen (http://www.stack.nl/%7Edimitri/doxygen/)

يكي از بهترين برنامه براي مستند سازي كد كه امكانات زيادي دارد، به فرمتهاي مختلفي خروجي مي‌دهد و بسياري از زبانها و سيستم‌عامل هاي مختلف را نيز پشتيباني مي‌كند.
فرمتهاي خروجي HTML - CHM - RTF - PDF - LaTeX - PostScript - man pages - XML


Doc O Matic (http://www.doc-o-matic.com)

مستند سازي كد را به صورتي ساده تر انجام مي‌دهد. و ظاهري زيبا دارد.
فرمتهاي خروجي: HTML - CHM - RTF - PDF - XML


DcocumentX (http://www.innovasys.com)

قابليت اضافه شدن در محيط VisualSyudio را نيز دارا مي‌باشد و مي‌توانيد در همان محيط به توليد مستندات بپردازيد
فرمتهاي خروجي: HTML - CHM


TwinText (http://www.ptlogica.com)

با پيروري از قواعدي ساده در Commentها مي‌توانيد تغييرات مستقيمي در مستندات داشته باشيد مثلا كدام كلمات عنوان يا زير عنوان باشد يا كدام توپر(Bold) چه قسمتهايي بالت دار باشند
فرمتهاي خروجي: HTML - CHM


VSdocman (http://www.helixoft.com)

مستنداتي مشابه MSDN توليد مي‌كند. و آنها را در MSDN سيستم اضافه مي‌كند.
فرمتهاي خروجي: HTML - CHM - RTF - XML



For DataBase

اين برنامه ها با اتصال به سرور و ديتابيس مورد نظر كليه اطلاعات آنرا (به جز داده‌هاي جداول) اعم از جداول و مشخصات فيلدها، توابع، كاربران، قوانين تعيين شده و ... را مستند سازي كرده و به صورت مرتب و مجتمع تحويل مي‌دهد.


DB Scribe (http://www.leadum.com)

اين برنامه اطلاعات مربوط به ديتابيس را مستندسازي مي‌كند.
فرمتهاي خروجي: HTML - CHM - RTF


BI Documenter (http://www.bidocumenter.com)


اين برنامه اطلاعات مربوط به ديتابيس را مستندسازي مي‌كند. دياگرام‌هاي آنرا رسم مي‌كند. مستندات آن ظاهر زيباتري دارند
فرمتهاي خروجي: HTML - CHM

Parham.D
یک شنبه 10 آذر 1387, 09:29 صبح
يك روش استاندارد براي ايجاد فرم‏هاي غير مستطيلي (در اين مثال مثلثي شكل).





private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}

private void frmMain_Load(object sender, EventArgs e)
{
System.Drawing.Drawing2D.GraphicsPath MyPaht = new System.Drawing.Drawing2D.GraphicsPath();

MyPaht.AddPolygon(new Point[] { new Point(0, 0), new Point(0, this.Height), new Point(this.Width, 0) });

Region MyRegion = new Region(MyPaht);

this.Region = MyRegion;
}

Esmail Solhkhah
دوشنبه 18 آذر 1387, 02:27 صبح
اگه از محیط سفید رنگ IDE خسته شدید
این دوتا فایل رو استفاده کنید
جهت استفاده تو IDE
Tools-> Import and Export Settings

hanif_x90
شنبه 07 دی 1387, 12:21 عصر
نحوه ساخت setup برای پروژه با نصب SqlServer و دات نت

http://barnamenevis.org/forum/showthread.php?t=139529

sinpin
دوشنبه 23 دی 1387, 09:29 صبح
comboBox2.Items.AddRange(comboBox1.Items.Cast<Object>().ToArray());ممکنه روشهای سرراست تری هم وجود داشته باشه

nathan
سه شنبه 24 دی 1387, 10:03 صبح
استفاده ازديكشنري:


Dictionary<datatype1, datatype2> name = new Dictionary<datatype1, datatype2>();

datatype1 : Key
datatype2 :value
بااستفاده ازديكشنري مي توانيد آرايه اي ازمطالب به هم وابسته راكه به هرركورديك كليدتخصيص مي دهيددريك مجموعه جمع كنيد.

danial82
چهارشنبه 25 دی 1387, 17:17 عصر
ارث بری در بین فرم ها

newgoldenman
شنبه 28 دی 1387, 00:39 صبح
انجام اين كار خيلي ساده هست. از كلاس TimeSpan استفاده ميكنيم.
به مثال زير توجه كنيد:
دو تا شي ء از نوع DateTime ميسازم، با تاريخ و ساعت دقيق:

DateTime myStartTime=new DateTime(2009,1,1,12,13,14,157);
DateTime myEndTime=new DateTime(2010,9,12,13,14,15,165);

حالا يك شي ء از نوع TimeSpan ميسازم و اونو اينطوري مقدار دهي ميكنم:

TimeSpan myDifference=myEndTime-myStartTime;

الان داخل myDifference فاصله ي زماني ميان دو زمان مد نظرمون قرار داره. كافيه تا براي دسترسي به محتواي اون، از خصوصيات خودش استفاده كنيم.
مثلاً داريم:


int totalDays=myDifference.Days ; //تعداد روزهاي ميان دو تاريخ مذبور
int totalHours=myDifference.Hours; //تعداد ساعات ميان دو تاريخ مذبور
int totalMinutes=myDifference.Minutes; //تعداد دقيقه هاي ميان دو تاريخ مذبور
int totalSeconds=myDifference.Seconds; //تعداد ثانيه هاي ميان دو تاريخ مذبور
int totalMilliSeconds=myDifference.MilliSeconds; //تعداد ميلي ثانيه هاي ميان دو تاريخ مذبور

كلاس TimeSpan متدهاي مفيد ديگه اي هم داره.

موفق باشيد.
(با تشكر از danial82 عزيز كه متذكر شدند دوست عزيزمون sinpin قبلاً (http://barnamenevis.org/forum/showpost.php?p=469390&postcount=58)اين كلاس رو معرفي كرده بودند. از sinpin عزيز هم ممنونم.)

newgoldenman
چهارشنبه 02 بهمن 1387, 00:08 صبح
با استفاده از اين روش بسيار ساده و عالي، بدون هيچ زحمت و توابع پيچيده و API هاي ... و بدون هيچ نيازي به Hook كردن صفحه كليد و ... براي برنامتون يك كليد ميانبر تعريف كنيد كه هر موقع و هر جاي ويندوز كه اون كليد فشار داده شد، براتون يك كاري انجام بده.

اين كار خيلي ساده هست:
1: يك پروژه ي ساده ي Windows Application ايجاد كنيد.
2: كلاس Form1 رو بدين ترتيب تغيير بديد:


public partial class Form1 : Form
{
const int HOTKEY_ID = 31197; //any number to be used as an id within this app
const int WM_HOTKEY = 0x0312;

public enum KeyModifiers //enum to call 3rd parameter of RegisterHotKey easily
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
Windows = 8
}
//API Imports
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd, // handle to window
int id, // hot key identifier
KeyModifiers fsModifiers, // key-modifier options
Keys vk // virtual-key code
);

[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, // handle to window
int id // hot key identifier
);

protected override void WndProc(ref Message msg)
{
// Listen for operating system messages.
switch (msg.Msg)
{
case WM_HOTKEY:
// this is the block the app turns in if the hotkey has been pressed
//so do your f@cking hotkey stuff here :-D
MessageBox.Show("F11 Pressed!");
break;
}
base.WndProc(ref msg);
}
//globalKeyboardHook myHookKeyBoard = new globalKeyboardHook();
public Form1()
{
InitializeComponent();
bool bcheck = RegisterHotKey(Handle, HOTKEY_ID, KeyModifiers.None, Keys.F11);

}
}

خيلي كارها ميشه باز براي راحت تر شدن استفاده از اين روش انجام داد. مثلاً اينكه بصورت يك DLL درش بياريم، يا توي يك كلاس بنويسيم و .....

اين هم تاپيك سوالم كه در نهايت به اين روش آگاهي يافتم:
http://barnamenevis.org/forum/showthread.php?p=668015&posted=1#post668015

اميدوارم كه مطلب مفيدي بوده باشه براتون.
موفق باشيد.

seniamail
چهارشنبه 02 بهمن 1387, 13:58 عصر
روش دیگر برای کپی آیتم های یک کامبو باکس به دیگری در موقعی که بخواهیم از کلاس استفاده کنیم



BindingSource bs = new BindingSource(comboBox1, "Items");
comboBox2.DataSource = bs;

danial82
پنج شنبه 03 بهمن 1387, 03:44 صبح
Using Settings in C#

mdssoft
چهارشنبه 09 بهمن 1387, 09:19 صبح
در این مقاله با چگونگی ایجاد User Control در WPF و استفاده از اون در برناممون آشنا میشید (http://www.codeproject.com/KB/WPF/UserControl.aspx)

http://www.codeproject.com/KB/WPF/UserControl/07.png

Salar Ashgi
دوشنبه 03 فروردین 1388, 00:30 صبح
سلام ، دوستان تابعی که در زیر نوشتم معکوس (مقلوب) یک رشته را می یابد ،

کد مورد نظر :



void str_rev(string str,ref string res)
{
//finds reverse of string str and put result in res

if(str.Length == 1)
{
res += str;
}
else
{
res += str[str.Length - 1].ToString();
str_rev(str.Substring(0, str.Length - 1),ref res);
}
}

نحوه استفاده :



private void button1_Click(object sender, EventArgs e)
{
string res = "";
str_rev("SALAR", ref res);
MessageBox.Show(res);
}


امیدوارم مفید بوده باشد !!!

sara62
پنج شنبه 10 اردیبهشت 1388, 17:37 عصر
به عنوان مثال میخواهیم بدون اینکه متد text changed تحریک شود مقدار text box را عوض کنیم و بعد متد را اجرا کنیم

//remove eventhandler
TextBox1.textchanged-=new EventHandler(TextBox1_textchanged);
TextBox1.text="value";
//add event handler
TextBox1.textchanged+=new EventHandler(TextBox1_textchanged);

sara62
پنج شنبه 10 اردیبهشت 1388, 17:55 عصر
برای اینکه کلید های سوئیچی هیچ تاثیری نداشته باشن خصوصیت key preview فرم را با Trueمقدار دهی میکنیم و کد زیر رو برای خصوصیت key down فرم می نویسیم


if(e.Alt && e.shift)
}
InputLanguage.currentInputLanguage=InputLanguage.F ormculture(system.Globalization.cultureInfo.Getcul tureInfo("fa"));

وحید پیرمرادیان
شنبه 19 اردیبهشت 1388, 11:23 صبح
برگرداندن نام تمام درایو های سیستم (http://barnamenevis.org/forum/showthread.php?t=158673)
بدست آوردن نام مودم سیستم (http://barnamenevis.org/forum/showthread.php?t=158682)
پخش آهنگ از اسپیکر داخل کیس (http://barnamenevis.org/forum/showthread.php?t=158681)
نمایش پسورد در اشکال مختلف (http://barnamenevis.org/forum/showthread.php?t=158678)
خاموش کردن،راه اندازی مجدد، stand by, hibernate سیستم (http://barnamenevis.org/forum/showthread.php?t=158675)
مرجع کامل رجیستری در #C (http://barnamenevis.org/forum/showthread.php?t=158666)
پخش انواع صداهای خطا، بیپ، و غیره (http://barnamenevis.org/forum/showthread.php?t=158670)
آیا می دانید سیستم شما چه مدت است که روشن است؟ (http://barnamenevis.org/forum/showthread.php?t=158672)
نوشته شد: برنامه ای برای نمایش فایل های ورد همراه با تصویر، فرمول و ... در فرم های #C (http://barnamenevis.org/forum/showthread.php?t=158949)
نمایش وضعیت کلیدهای Num Lock, Caps Lock, Scroll Lock (http://barnamenevis.org/forum/showthread.php?t=158945)
هشدار دهنده اتصال وسیله به USB (http://barnamenevis.org/forum/showthread.php?t=158894)
ConnectionString برای پایگاه داده پسورد دار (http://barnamenevis.org/forum/showthread.php?t=158830)

Sajjad.Aghapour
جمعه 08 خرداد 1388, 19:05 عصر
تبدیل عکس به آیکن.....


Size size = new Size(32, 32);
Bitmap bmp = new Bitmap(Image.FromFile(pathStr), size);
Icon temp = Icon.FromHandle(bmp.GetHicon());


FileStream newIcon = new FileStream("c:\\sa.ico", FileMode.Create);
temp.Save(newIcon);

newIcon.Close();

sara62
جمعه 15 خرداد 1388, 20:50 عصر
private void func_SetLanguagePersian()
{
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("fa-IR");
InputLanguage MyL;
string BackL;
MyL = InputLanguage.CurrentInputLanguage;
MyCulture = MyL.Culture;
BackL = MyCulture.Name;
MyCulture = new System.Globalization.CultureInfo("fa-IR");
InputLanguage.CurrentInputLanguage = System.Windows.Forms.InputLanguage.FromCulture(MyC ulture);
}

private void func_SetLanguageEnglish()
{
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en");
InputLanguage MyL;
string BackL;
MyL = InputLanguage.CurrentInputLanguage;
MyCulture = MyL.Culture;
BackL = MyCulture.Name;
MyCulture = new System.Globalization.CultureInfo("en");
InputLanguage.CurrentInputLanguage = System.Windows.Forms.InputLanguage.FromCulture(MyC ulture);
}

sara62
جمعه 15 خرداد 1388, 20:53 عصر
یکی از روش های گرفتن مقادیر عددی برای ورودی استفاده از MaskedTextBox هست. روش دیگه استفاده از متد TryParse هست. این تابع دو پارامتر برای ورودی مگیره، یکی رشته ای که باید تبدیل بشه و دیگری متغییری که عدد تبدیل شده باید داخلش ذخیره بشه. این تابع مقداری از نوع bool بر میگردونه.

Console.Write("Enter a number for check: ");
int i = 0;
string inputNumber = Console.ReadLine();
if (int.TryParse(inputNumber, out i))
{
Console.WriteLine("Valid format");
}
else
{
Console.WriteLine("Not valid format");
}
Console.ReadKey()

sara62
جمعه 15 خرداد 1388, 20:54 عصر
توضیح: رنگ رو میتونید خودتون عوض کنید.

int start = 0;
int indexOfSearchText = 0;

private void button1_Click(object sender, EventArgs e)
{
int startindex = 0;

if (txtSearch.Text.Length > 0)
startindex = FindMyText(txtSearch.Text.Trim(), start, rtb.Text.Length);

if (startindex >= 0)
{
rtb.SelectionColor = Color.Red;

int endindex = txtSearch.Text.Length;

rtb.Select(startindex, endindex);

start = startindex + endindex;
}
}

private int FindMyText(string txtToSearch, int searchStart, int searchEnd)
{

if (searchStart > 0 && searchEnd > 0 && indexOfSearchText >= 0)
{
rtb.Undo();
}


int retVal = -1;


if (searchStart >= 0 && indexOfSearchText >= 0)
{

if (searchEnd > searchStart || searchEnd == -1)
{

indexOfSearchText = rtb.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None);

if (indexOfSearchText != -1)
{

retVal = indexOfSearchText;
}
}
}
return retVal;
}

sara62
یک شنبه 31 خرداد 1388, 23:04 عصر
public class NumberToString
{
private static string[] yakan = new string[10] { "صفر", "يک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه" };
private static string[] dahgan = new string[10] { "", "", "بيست", "سي", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود" };
private static string[] dahyek = new string[10] { "ده", "يازده", "دوازده", "سيزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده" };
private static string[] sadgan = new string[10] { "", "يکصد", "دوصد", "سيصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد" };
private static string[] basex = new string[5] { "", "هزار", "ميليون", "ميليارد", "تريليون" };


private static string getnum3(int num3)
{
string s = "";
int d3, d12;
d12 = num3 % 100;
d3 = num3 / 100;
if (d3 != 0)
s = sadgan[d3] + " و ";
if ((d12 >= 10) && (d12 <= 19))
{
s = s + dahyek[d12 - 10];
}
else
{
int d2 = d12 / 10;
if (d2 != 0)
s = s + dahgan[d2] + " و ";
int d1 = d12 % 10;
if (d1 != 0)
s = s + yakan[d1] + " و ";
s = s.Substring(0, s.Length - 3);
};
return s;
}

public string num2str(string snum)
{
string stotal = "";
if (snum == "0")
{
return yakan[0];
}
else
{
snum = snum.PadLeft(((snum.Length - 1) / 3 + 1) * 3, '0');
int L = snum.Length / 3 - 1;
for (int i = 0; i <= L; i++)
{
int b = int.Parse(snum.Substring(i * 3, 3));
if (b != 0)
stotal = stotal + getnum3(b) + " " + basex[L - i] + " و ";
}
stotal = stotal.Substring(0, stotal.Length - 3);
}
return stotal;
}

}

Mohsen229266
سه شنبه 02 تیر 1388, 20:33 عصر
TextChanged در DataGridView


private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.TextChanged += MyDataGridTextChanged;
}
private void MyDataGridTextChanged(object sender, EventArgs e)
{
MessageBox.Show(((Control)sender).Text);
}

Mohsen229266
جمعه 05 تیر 1388, 18:06 عصر
تابع IsNumeric در C#


staticbool IsNumeric(object Expression)
{
bool isNum;
double retNum;
isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInf o, out retNum);
return isNum;
}

نحوه استفاده برای یک textBox


bool IsNumber = IsNumeric(textBox1.Text);

newgoldenman
دوشنبه 08 تیر 1388, 13:45 عصر
با سلام خدمت شما دوست عزیز
دوست عزیز میخواستم اگر براتون امکان داره تابعی كه دوتاریخ رو با هم مقایسه میکنه رو بهم بدید من یک برنامه دارم که سرچ بین دو تاریخ و مقایسه آن برام مهمه.اگه براتون امکان داشت لطف کنید و تابع رو برام بفرستید

با تشکر از شما دوست گرامی

سلام...

یه توضیح كوچیك راجع به صورت سوال میدم، سپس میپردازم به حل اون و ...

صورت سوال:


سلام
ببخشید کسی میتونه راهنمایی کنه که چطوری توی C# میتونم تداخل ساعت بگیرم ؟
من دو فیلد دارم که ساعت شروع و پایان را در فرمی در C# میدم و باید با ساعت های شروع و پایان دیگه ای که در پایگاه sql دارم در جدول قراره ملاقات چک بشه و اگر تداخلی وجود داشت آن را اعلام کنه .
نمیدونم نوع فیلد رو باید از چه نوعی تعریف کنم timedate یا شایدم text ؟
لطفاً اگه کسی می دونه راهنمایی کنه که چه کدی باید بنویسم .
با تشکر

توضیح كلی و ارائه ی راه حل برای حل سوال:

در حالتی كه فرض كنیم ساعت اول توی تاریخ اول و ساعت دوم توی تاریخ دوم قرار داره، یعنی مثلاً این دو تا زمان:

5 تیر 1388 ساعت 13:14:15
و
18 تیر 1388 ساعت 15:16:17

در این حالت، 13 حالت مختلف رو باید بررسی كرد برای بدست آوردن تمامی حالتهای تداخل موجود. كه توی این عكس براحتی قابل مشاهده هست:
http://barnamenevis.org/forum/attachment.php?attachmentid=32370&stc=1&d=1246040927

دو تا خط آبی ابتدا و انتهای زمان ها هستند.
خط قرمز بالا ابتدا و انتهای زمان ها هست.
خط های سبز 13 حالت مختلف هستند.
نقاط مشكی رو هم زدم كه بهتر بشه فهمید سر و ته ماجرا كجاست!

حالا اگر این 13 حالت رو یه جمع بندی كلی بكنیم، به سه حالت كلی میرسیم.


توضیح كامل شیوه ی حل مسئله و كد مورد نیاز:

این الگوریتم و شیوه ای كه الان میخوام خدمتتون عرضه كنم، نتیجه ی تقریباً 6 روز تفكر و بررسی بنده برای برای انجام این كار هست. و تا حد 100% به نتیجه ای كه میده ایمان دارم. چون توی پروژه ای ازش استفاده كردم كه اگر حتی یك ثانیه بین دو تا زمان مورد نظر، Collision وجود داشته باشه، محاله كه بشه خسارتش رو جبران كرد...

به هر حال،خیلی از كدها رو كه مشابه بودند یا مورد نیاز شما نبودند، از كدها حذف كردم و یك نمونه ی خیلی ساده رو برای شما ویرایش كردم و این هم توضیحاتش:

من توی جدولی به نام AfishTadvin چند تا فیلد دارم كه دو تا از فیلدهام از نوع DateTime هست. میدونیم كه هر كدوم از این فیلدها حاوی تاریخ و البته ساعت و دقیقه و ... هستند!
شیوه ای كه من ازش استفاده كردم، بدین ترتیب هست كه ابتدا Collision احتمالی موجود بین تاریخ های موجود رو با تاریخ های مورد نظرم، بدست میارم، سپس اگر Collision ای مشاهده شد، حالا میام دوباره Collision موجود بین زمان های مورد نظرم رو با زمان های داخل پایگاه داده بدست میارم. در نهایت اگر چنین Collision‌ ای موجود بود، اون رو متوجه میشم و ...

این هم كد:
فرض كنید كه داخل رویداد یك دكمه این كد رو داریم. هر موقع دكمه زده شد، دو تاریخ مورد نظر خودمون و همچنین زمان های مورد نظرمون رو به تابع هایی كه در ادامه مینویسم، میفرستیم و ...


DateTime afishTimeFromCollision = new DateTime(faDatePicker1.SelectedDateTime.Year, faDatePicker1.SelectedDateTime.Month, faDatePicker1.SelectedDateTime.Day, ngmTimePicker1.Hour, ngmTimePicker1.Minute, 0);
DateTime afishTimeToCollision = new DateTime(faDatePicker2.SelectedDateTime.Year, faDatePicker2.SelectedDateTime.Month, faDatePicker2.SelectedDateTime.Day, ngmTimePicker2.Hour, ngmTimePicker2.Minute, 0);

string xAfishCodeTemp = "";
string xTempEqpSerial = "";
bool xContinue = true;

for (int i = 0; i < dataGridViewTolid.Rows.Count; i++)
{
xTempEqpSerial = dataGridViewTolid.Rows[i].Cells[1].Value.ToString();

if (myCollisionChecker.NGMEquipmentsCollisionDetectio n(xTempEqpSerial, afishTimeFromCollision, afishTimeToCollision))
{
xAfishCodeTemp = myCollisionChecker.AfishCode();
MessageBox.Show("Time Collision Detection... You are not able to continue!");
xContinue = false;
break;
}
}

if (!xContinue)
{
break;
}این تابع اصلی هست كه درون اون دستور خاص مورد نیاز ساخته شده و به SQL داده میشه. اگر بین تاریخ های مورد نظر ما، و زمان های ذخیره شده توی بانك اطلاعاتیمون، Collision وجود داشته باشه، با استفاده از تابع بعدی كه در ادامه مینویسم، زمان های مورد نظر رو برای Collision بررسی میكنیم و ...


public bool NGMEquipmentsCollisionDetection(string eqpSerialNumber, DateTime afishTimeFrom, DateTime afishTimeTo)
{
_AfishCode = "";
TimeSpan mySpan = new TimeSpan();
mySpan = afishTimeTo - afishTimeFrom;
int dayCounter = mySpan.Days;

int myHourFrom = afishTimeFrom.Hour;
int myMinuteFrom = afishTimeFrom.Minute;

int myHourTo = afishTimeTo.Hour;
int myMinuteTo = afishTimeTo.Minute;

int xNum;
string[] xEqpList;

bool xTemp = false;
for (int i = 0; i <= dayCounter; i++)
{
DateTime xAfishTimeFrom = afishTimeFrom.AddDays(i);
_AfishTimeFrom = new DateTime(xAfishTimeFrom.Year, xAfishTimeFrom.Month, xAfishTimeFrom.Day, 0, 0, 0);
_AfishTimeTo = new DateTime(xAfishTimeFrom.Year, xAfishTimeFrom.Month, xAfishTimeFrom.Day, 23, 59, 59);

#region AfishTadvin
//Check the times for collision on SQL Command. If there is any collision on the DATES, SQL returns its rows...
cmd = new SqlCommand("SELECT AfishCode,EqpList,AfishTimeFrom,AfishTimeTo FROM AfishTadvin WHERE (AfishTimeFrom>=@p1 AND AfishTimeFrom<=@p2) OR (AfishTimeTo>=@p1 AND AfishTimeTo<=@p2) OR (AfishTimeFrom<=@p1 AND AfishTimeTo>=@p2)", con);
SqlParameter p1 = new SqlParameter("p1", _AfishTimeFrom);
SqlParameter p2 = new SqlParameter("p2", _AfishTimeTo);
p1.SqlDbType = SqlDbType.DateTime;
p2.SqlDbType = SqlDbType.DateTime;
SqlParameter[] parameterArray = new SqlParameter[] { p1, p2 };
foreach (SqlParameter parameterX in parameterArray)
{
cmd.Parameters.Add(parameterX);
}
try
{
con.Close();
con.Open();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
try
{
while (true)
{
dr.Read();

myNGM = new NGMPersonsCodeString(dr[1].ToString());
xNum = myNGM.NGMPersonsCodeListCount;
xEqpList = new string[xNum];
if (xNum != 0)
{
for (int i1 = 0; i1 < xNum; i1++)
{
xEqpList[i1] = myNGM.NGMPersonsCodeList[i1];
}
}
//Now, after checking the DATEs collision, we should check the TIMEs collision if they have.
if (checkTimeCollision(myHourFrom, myMinuteFrom, myHourTo, myMinuteTo, DateTime.Parse(dr[2].ToString()).Hour, DateTime.Parse(dr[2].ToString()).Minute, DateTime.Parse(dr[3].ToString()).Hour, DateTime.Parse(dr[3].ToString()).Minute))
{
for (int i1 = 0; i1 < xNum; i1++)
{
if (xEqpList[i1].Equals(eqpSerialNumber))
{
_AfishCode = dr[0].ToString();
xTemp = true;
break;
}
}
}
}
}
catch (Exception)
{
//End of while with exception! LOL
}
}
else
{
xTemp = false;
}
}
catch (Exception)
{
//MessageBox.Show("NGM ERRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR: ");
}
if (xTemp)
{
break;
}
#endregion
else
{
xTemp = false;

}
}
con.Close();
if (xTemp)
{
//collision found
return (true);
}
else
{
//collision not found
return (false);
}
}
این هم از تابع آخر. كارش این هست كه Collision احتمالی بین دو زمان مختلف رو با دو زمان دیگه بررسی و نتیجه رو به ما اعلام میكنه...


//Check the times if they have collision in SIMPLE date!
private bool checkTimeCollision(int myHourFrom, int myMinuteFrom, int myHourTo, int myMinuteTo, int xHourFrom, int xMinuteFrom, int xHourTo, int xMinuteTo)
{
DateTime myFrom = new DateTime(2009, 9, 13, myHourFrom, myMinuteFrom, 0);
DateTime myTo = new DateTime(2009, 9, 13, myHourTo, myMinuteTo, 0);
DateTime xFrom = new DateTime(2009, 9, 13, xHourFrom, xMinuteFrom, 0);
DateTime xTo = new DateTime(2009, 9, 13, xHourTo, xMinuteTo, 0);

if ((myFrom >= xFrom) && (myFrom <= xTo) || ((myTo >= xFrom) && (myTo <= xTo)) || ((myFrom <= xFrom) && (myTo >= xTo)))
{
if (myTo == xFrom || myFrom == xTo)
{
return (false);
}
else
{
return (true);
}
}
else
{
return (false);
}
}


توضیح خاصی نیاز نمیبینم! مگر اینكه بگم چون این كد ها رو از توی پروژه ی خودم كپی كردم اینجا، شاید بعضی از مقادیر و كلاس هایی كه استفاده شده، براتون نامفهوم باشه! اصل ماجرا رو ولی براحتی میتونید برداشت كنید. ان شاء الله.

پاینده باشید و سرافراز.
یا علی مدد

imanet
شنبه 20 تیر 1388, 20:39 عصر
این لیست به مرور تکمیلتر خواهد شد.


http://www.dofactory.com/Connect/Connect.aspx




سايتي كه معرفي كرديد خوب بود
اينم يك مرجع تقريبا كامل براي انواع مختلف connection string
http://connectionstrings.com
اميدوارم به كارتون بياد:چشمک:

BILLY_Mgs
یک شنبه 04 مرداد 1388, 20:40 عصر
using System.IO;
void CopyDirectory(DirectoryInfo source, DirectoryInfo destination)
{
if (!destination.Exists)
destination.Create();
// Copy all files.
FileInfo[] files = source.GetFiles();
foreach (FileInfo file in files)
file.CopyTo(Path.Combine(destination.FullName, file.Name));

// Process subdirectories.
DirectoryInfo[] dirs = source.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
// Get destination directory.
string destinationDir = Path.Combine(destination.FullName,dir.Name);
// Call CopyDirectory() recursively.
CopyDirectory(dir, new DirectoryInfo(destinationDir));
}
}منبع - کتاب : Visual C# 2005 Recipes: A Problem-Solution Approach


سلام این پست ماله 3-2 ساله پیشه !
الان یه مشکلی دارم .
میخوام همین حالتو با یک progressbar یا یک Backgrundworker انجام بدم چون حجم فولدر ها بالای ه 2 گیگ هست و برنامه فریز میشه میشه راه نمایی کنین چه جوری progress bar بزارم ؟
ببخشید که بد جایی نوشتم . آخه نیاز فوری دارم.

sds1920
پنج شنبه 08 مرداد 1388, 09:19 صبح
ابتدا خاصیت CkeckBoxes رادر Listview برابر با True قرار دهید.سپس کدهای زیر را در متد رویداد ItemChecked بنویسید.


private int LastIndexChecked;
private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
{

if (listView1.CheckedIndices.Count==2)
{
//UnCheck before Item.
listView1.Items[LastIndexChecked].Checked = false;

//set Last index selected.
LastIndexChecked = listView1.CheckedIndices[0];
}
else
//for first step.
if(listView1.CheckedIndices.Count==1)
{
LastIndexChecked = listView1.CheckedIndices[0];
}
}

sds1920
پنج شنبه 08 مرداد 1388, 09:39 صبح
در c شارپ تابعی با نام Rename وجود ندارد یا حداقل من ندیدم.ولی می توانید برای Rename کردن از کد زیر استفاده کنید.


System.IO.File.Move("File Name", "New File Name");

توجه کنید که آدرس های File Name و New File Name باید یکسان باشد.
برای مثال عکسی با نام Picture1 را به Picture2 تغییر میدهیم:


System.IO.File.Move(@"C:\Picture1.jpg",@"C:\Picture2.jpg");

Mohsen229266
یک شنبه 18 مرداد 1388, 17:24 عصر
با سلام دیدم بعضی از دوستان با ایونت KeyPress در dataGridView مشکل داشتند کدشو اینجا قرار دادم

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.KeyPress += DataGridKeyPress;
}
private void DataGridKeyPress(object sender, KeyPressEventArgs e)
{

}

navid_8x
سه شنبه 03 شهریور 1388, 03:56 صبح
در فرم ها می شه از تابع IsKeyLocked استفاده کرد.

IsKeyLocked(Keys.NumLock);
IsKeyLocked(Keys.CapsLock);
IsKeyLocked(Keys.Scroll);
و در console از خود کلاس Console

Console.NumberLock;
Console.CapsLock;
که از نوع بولی هستن.

saeedcheginy
یک شنبه 22 شهریور 1388, 07:47 صبح
این راهنما حتی می تواند به صورت فارسی تایپ شود وهنگام استفاده از یک متد شما را در درک و مقدار دهی آن راهنمایی میکند مانند متد ها وکلاس های خود مایکرو سافت




///<summary>
/// Provides more streamlined interface for associating a single or multiple extensions with a single program.
///</summary>
classAssociationManager
{
AssociationManager a = newAssociationManager();
///<summary>
/// Determines of the list of extensions are associated with the specified program id.
///</summary>
///<param name="progId">Program id to check against.</param>
///<param name="extensions">String array of extensions to check against the program id.</param>
///<returns>String array of extensions that were not associated with the program id.</returns>
publicstring[] CheckAssociation(string progId, paramsstring[] extensions)
}
.
.
.
{

saeedcheginy
یک شنبه 22 شهریور 1388, 07:56 صبح
به نظر کامل و روشنه این طور نیست؟



using System;
using System.Windows.Forms;
using System.Drawing;
namespace ButtonDClick
{
public class Form1 : System.Windows.Forms.Form
{
// Track the number of
// double-clicks with the count variable.
int count = 0;
public Form1()
{
InitializeComponent();
// Display OK button for closing.
this.MinimizeBox = false;
// Create an instance of the DoubleClickButton class.
DoubleClickButton dClickB = new DoubleClickButton();
dClickB.Bounds = new Rectangle(10,10,200,30);
dClickB.Text = "Double-click me!";
Controls.Add(dClickB);
// Add the DClick event hander to the DoubleClick event.
dClickB.DoubleClick += new EventHandler(DClick);
}
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.Text = "Form1";
}
private void DClick(object o, EventArgs e)
{
// Display the number of double-clicks.
MessageBox.Show("Double-click count = " + ++count);
}
static void Main()
{
Application.Run(new Form1());
}
// Derive a button with extended funtionality
// from the Button class.
public class DoubleClickButton : System.Windows.Forms.Button
{
// Note that the DoubleClickTime property gets
// the maximum number of milliseconds allowed between
// mouse clicks for a double-click to be valid.
int previousClick = SystemInformation.DoubleClickTime;
public new event EventHandler DoubleClick;
protected override void OnClick(EventArgs e)
{
int now = System.Environment.TickCount;
// A double-click is detected if the the time elapsed
// since the last click is within DoubleClickTime.
if ( now - previousClick <= SystemInformation.DoubleClickTime)
{
// Raise the DoubleClick event.
if (DoubleClick != null)
DoubleClick(this,EventArgs.Empty);
}
// Set previousClick to now so that
// subsequent double-clicks can be detected.
previousClick = now;
// Allow the base class to raise the regular Click event.
base.OnClick(e);
}
// Event handling code for the DoubleClick event.
protected new virtual void OnDoubleClick(EventArgs e)
{
if (this.DoubleClick != null)
this.DoubleClick(this, e);
}
}
}
}
 

aftabgarmabakhsh
یک شنبه 22 شهریور 1388, 11:14 صبح
ابتدا name space زير را اضافه كنيد:
using ICSharpCode.SharpZipLib.Zip;
سپس در كد دكمه اي كه مي خواهيد zip كند ، كد زير را وارد نماييد:


string zipFileStoragePath = "C:\\";
string zipFileName = "test.zip";
string fileToCompress = "C:\\Sunset.jpg";
ZipFile z = ZipFile.Create(zipFileStoragePath + zipFileName);
//initialize the file so that it can accept updates
z.BeginUpdate();
//add the file to the zip file
z.Add(fileToCompress);
//commit the update once we are done
z.CommitUpdate();
//close the file
z.Close();


اگر نتوانستيد namespase را اضافه كنيد ، به refrence هاي پروژه ،از مسير زير ، dll مربوطه را اضافه كنيد:

aftabgarmabakhsh
چهارشنبه 25 شهریور 1388, 08:33 صبح
ابتدا بالاي فرم ، كد زير را وارد نماييد:

[System.Runtime.InteropServices.DllImport("Shell32.dll")]
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
سپس در دكمه اي كه مي خواهد refresh كند بنويسيد:

SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);

Salar Ashgi
چهارشنبه 25 شهریور 1388, 15:19 عصر
از روش ساده زیر هم میشه برای تعیین عدد بودن یک رشته استفاده کرد :

توسط یک متود :



bool str_is_digit(string str)
{
bool res = true;
foreach (char c in str)
{
if (!char.IsDigit(c))
{
res = false;
break;
}
}
return res;
}

nima_78
یک شنبه 29 شهریور 1388, 09:24 صبح
برای خواندن ConnectionString ی که در فایل app.config قرار داده شده کافیه و ایجاد یک SqlConnection کافیه کد زیر را تایپ کنین:



SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["myConnection"].ConnectionString);



با سلام
لطفا اگه میشه این کد را با vb.net بنویسید خیلی احتیاج دارم
ممنون میشم سریع پاسخ دهید

EhsanAvr
چهارشنبه 01 مهر 1388, 18:19 عصر
مجموعه نکات مهم در برنامه نویسی سی شارپ دات نت

از صفحه ی 1 این تاپیک تا همینجا »»»»» تمام نکات + نکات دیگه ی تالار همگی در یه پی دی اف 200 صفحه ای.
http://barnamenevis.org/forum/showpost.php?p=812994&postcount=44

meysamkarimi
چهارشنبه 01 مهر 1388, 21:52 عصر
ابتدا فضای نام System.IO را به برنامه اضافه کنید.
حال متد زیر را در برنامه فراخوانی کنید تنها کافی است نام کنترل ListView را به متد بفرستید. البته باید خاصیت View کنترل لیست‏ویو در حالت Details باشد.


void ExportToExcel(ListView lstView)
{
SaveFileDialog DlgSaveExcel = new SaveFileDialog();
DlgSaveExcel.DefaultExt = "csv";
DlgSaveExcel.Filter = "csv files (*.csv)|*.csv";

if (DlgSaveExcel.ShowDialog() == DialogResult.OK)
{
Stream myStream;
byte[] info = null;
string ExportExcel = string.Empty;

if ((myStream = DlgSaveExcel.OpenFile()) != null)
{
foreach (ColumnHeader Curr in lstView.Columns)
{
ExportExcel += Curr.Text.Replace(";", "") + ";";
}
ExportExcel += "\n";

foreach (ListViewItem Item in lstView.Items)
{
foreach (ListViewItem.ListViewSubItem SubItem in Item.SubItems)
{
ExportExcel += SubItem.Text.Replace(";", "") + ";";
}
ExportExcel += "\n";
}

info = new UTF8Encoding(true).GetBytes(ExportExcel);
myStream.Write(info, 0, info.Length);
myStream.Close();
}
}
}

r_khan
دوشنبه 06 مهر 1388, 14:06 عصر
روشی برای سه ر قم سه رقم جدا کردن اعداد


string natije = textBox1.Text;
int i = natije.Length;
while (i > 3)
{
natije = natije.Insert(i - 3, ",");
i -= 3;
}
textBox2.Text = natije;

برنامه را هم براتون گذاشتم

daniel_0247
دوشنبه 06 مهر 1388, 14:13 عصر
آیا سی دی در CDRom وجود دارد ؟

foreach (ManagementObject mo in searcher.Get())
{
// If both properties are null I suppose there's no CD
if ((mo["volumename"] != null) || (mo["volumeserialnumber"] != null))
{
MessageBox.Show("The CD Is On Drive");
MessageBox.Show( mo["volumename"].ToString());
break;
}
else
{
MessageBox.Show ("No CD in Unit");
break;
}
}
}

______________________
My Blog (http://prohardcoding.blogfa.com/)

daniel_0247
دوشنبه 06 مهر 1388, 19:33 عصر
بدست آوردن IP هاست :


using System.Net;
...
String strHostName = Dns.GetHostName();
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;

_____________
My Blog (http://prohardcoding.blogfa.com/)

mahdi_7610
سه شنبه 07 مهر 1388, 13:44 عصر
ابتدا بايد توي sulotion Explorer روي نام پروژه راست کليک کنيد و سپس گزينه Add Refrence را بزنيد و از پنجره باز شده توي تب .NET دنبال گزينه System.Management بگرديد و سپس اونا انتخاب کنيد و گزينه ok را بزنيد .

و سپس :

using System.Management;




public string GetCPUId()
{
string cpuInfo = String.Empty;
//create an instance of the Managemnet class with the
//Win32_Processor class
ManagementClass mgmt = new ManagementClass("Win32_Processor");
//create a ManagementObjectCollection to loop through
ManagementObjectCollection objCol = mgmt.GetInstances();
//start our loop for all processors found
foreach (ManagementObject obj in objCol)
{
if (cpuInfo == String.Empty)
{
// only return cpuInfo from first CPU
cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}

mahdi_7610
پنج شنبه 09 مهر 1388, 16:26 عصر
ابتدا System.Management رو به References پروژه بیفزایید و سپس :


private void GetHDDSerialNumber()
{
ManagementObjectSearcher searcher;
string query1 = "SELECT * FROM Win32_DiskDrive";
string query2 = "SELECT * FROM Win32_PhysicalMedia";
searcher = new ManagementObjectSearcher(query1);
foreach (ManagementObject wmi_HD in searcher.Get())
if (wmi_HD["Model"] != null)
MessageBox.Show(wmi_HD["Model"].ToString());
searcher = new ManagementObjectSearcher(query2);
foreach (ManagementObject wmi_HD in searcher.Get())
if (wmi_HD["SerialNumber"] != null)
MessageBox.Show(wmi_HD["SerialNumber"].ToString());
}

jaliljan
شنبه 11 مهر 1388, 12:27 عصر
روشی دیگر برای 3رقم 3 رقم جدا کردن اعداد
lblPayment.Text = string.Format("{0:N0}", 123456);

Mohsen229266
یک شنبه 12 مهر 1388, 08:46 صبح
روشی دیگر برای 3رقم 3 رقم جدا کردن اعداد

lblPayment.Text = string.Format("{0:N0}", 123456);
برای جداکردن اعداد هنگام تایپ


private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.Text))
{
textBox1.Text = string.Format("{0:N0}", int.Parse(textBox1.Text.Replace(",", "")));
textBox1.Select(textBox1.Text.Length, 0);
}
}

ir.start
دوشنبه 13 مهر 1388, 13:06 عصر
كدي براي خالي كردن textbox هاي درن يك گروپ باكس


private void cleartextboxes()
{
Control stext;
foreach (Control tempLoopVar_stext in GroupBox1.Controls)
{
stext = tempLoopVar_stext;
if (stext is TextBox)
{
stext.Text = "";
}
}
}

daniel_0247
دوشنبه 13 مهر 1388, 13:11 عصر
مبحث Setting
تفاوت بین User Scope و Application Scope

Setting ها دارای دو دسترسی در زمان اجرا هست : User , Application

User : با استفاده از این دسترسی می توانید در زمان اجرا هم تغییرات در Setting ایجاد کنید .
َApplication : با استفاده از این دسترسی نمی توانید در زمان اجرا تغییرات در Setting به وجود آورید و فقط در زمان طراحی می توانید.

یعنی به طور کلی >>>>
User Scope = Read & Write

Application Scope = Read - Only

__________________________
My Blog (http://prohardcoding.blogfa.com/)

Parham.D
دوشنبه 04 آبان 1388, 09:33 صبح
Generic ها جزئی از سیستم نوع‏های چهارچوب .NET هستند که به شما اجازه میدهند که یک نوع را تعریف نمایید، اما بعضی از جزئیات آن را تعریف نشده باقی بگذارید. به جای تعیین کردن نوع پارامترها یا اعضای کلاس، شما میتوانید کدی بنویسید که از نوع‏های ارائه شده توسط شما، برای تعیین آنها استفاده کند. .NET دارای کلاسهای Generic زیادی در فضای نام SYstem.Collections.Generic است، مانند Dictionary, Queue و SortedDictionary.

چرا از Genericها استفاده میکنیم؟


خطای زمان اجرا را کاهش میدهد. اگر شما یک String را به کلاس نوع Object تبدیل کنید و سپس سعی کنید که آن Object را به یک متغیر از نوع int32 تبدیل کنید، کامپایلر نمیتواند این خطا را تشخیص دهد. در عوض زمان اجرا یک استثنا پرتاب میکند. استفاده از Genericها کمک میکند تا این نوع اشکالات را قبل از اجرا برنامه پیدا کند.
کارایی را افزایش میدهد. تبدیل نوع داده، نیاز به Box کردن و Unbox کردن دارد. که این کار زمانبر بوده و کارایی را کاهش میدهد. استفاده از Genericها نیازی به تبدیل نوع یا Box کردن ندارد. بنابراین موجب افزایش سرعت و بالا رفتن کارایی برنامه خواهد شد.

چگونه یک نوع Generic بسازیم؟
ابتدا به کد زیر دقت کنید:




Class Gen<T, U>
{
Public T t;
Public U u;
Public Gen (T _t, U _u)
{
t = _t;
u= _u;
}
}


همانطور که می‏بینید، کلاس Gen دارای دو عضو از نوع‏های T و U است. کد میزبان نوع داده‏های واقعی را برای T و U تعیین خواهد کرد که میتواند مثلا String یا Int یا یک کلاس سفارشی یا هر ترکیب دیگری باشند. در نمونه کدهای زیر از Generic ایجاد شده در بالا استفاده میکنیم.





// Add two String using Gen class
Gen<String, String> ga = new Gen<String, String> ("Hello ", "World");
Console.Writeline (ga.t + ga.u);

//Add a double and int using Gen Class
Gen<double, int> gb = new Gen<double, int> (10.125, 2005);
Console.Writeline (gb.t + gb.u);

hakelberfin
جمعه 29 آبان 1388, 01:36 صبح
انتخاب بعضی از کنترل های دلخواه از یک نوع :
میتونیم از خاصیت AccessibleName برای اینکار استفاده کنیم . بطوریکه برای کنترل های موردنظرمان مقدار مشخصی را در این خاصیت قرار دهیم . مثلا:



foreach (Control C in this.Controls)
if (C is Panel && Control.AccessibleName == "Hello")
{
C.BackColor = Color.red
{

danial82
جمعه 13 آذر 1388, 23:34 عصر
مبحث Setting
تفاوت بین User Scope و Application Scope

Setting ها دارای دو دسترسی در زمان اجرا هست : User , Application

User : با استفاده از این دسترسی می توانید در زمان اجرا هم تغییرات در Setting ایجاد کنید .
َApplication : با استفاده از این دسترسی نمی توانید در زمان اجرا تغییرات در Setting به وجود آورید و فقط در زمان طراحی می توانید.

یعنی به طور کلی >>>>
User Scope = Read & Write



مطلب کامل در مورد Using Settings in C#‎ در همین تاپیک
http://barnamenevis.org/forum/showpost.php?p=668596&postcount=340

abolfazlab
جمعه 27 آذر 1388, 08:25 صبح
سلام
http://www.switchonthecode.com

Salar Ashgi
پنج شنبه 17 دی 1388, 15:33 عصر
یافتن نام درایوهای یک سیستم بروشی ساده تر :



public void Get_Drives_name()
{
string[] drv = Environment.GetLogicalDrives();
string str = "";
foreach (string s in drv)
{
str += s + "\n";
}
MessageBox.Show(str);
}

Salar Ashgi
پنج شنبه 17 دی 1388, 15:39 عصر
پیدا کردن تعداد خطوط یک متن چند سطری بروشی خیلی ساده :




int Number_of_lines(string str)
{
int k = 0;
foreach (char c in str)
{
if (c == '\n')
k++;
}
if (str[str.Length - 1] != '\n')
k++;
return k;
}

Salar Ashgi
پنج شنبه 17 دی 1388, 15:51 عصر
پیدا کردن تعداد ارقام اعشار یک عدد اعشاری :



int Ashar_Counter(double f)
{
int s = f.ToString().IndexOf('.');
return f.ToString().Substring(s+1, (f.ToString()).Length - s-1).Length;
}

Salar Ashgi
پنج شنبه 17 دی 1388, 16:37 عصر
پیدا کردن مقدار تقریبی فاکتوریل اعداد بزرگ از روش تقریب استرلینگ :



string Large_factorial(int n)
{
return (Math.Sqrt(2 * n * Math.PI) * Math.Pow((double)(n) / Math.E, n)).ToString();
}

Salar Ashgi
پنج شنبه 17 دی 1388, 16:43 عصر
پاک کردن محتویات پوشه Recent Documents :



using System.IO;
string path = Environment.GetFolderPath(Environment.SpecialFolde r.Recent);
string[] files = Directory.GetFiles(path);
foreach (string s in files)
{
File.Delete(s);
}

Salar Ashgi
پنج شنبه 17 دی 1388, 17:01 عصر
پیدا کردن انواع مختلف از ورژن های نصب شده dot NET Framework در یک سیستم :



string Get_dotNET_versions()
{
string path = @"C:\WINDOWS\Microsoft.NET\Framework";
string[] info = Directory.GetDirectories(path);
string str = "Installed vesions of dot NET Framework in your system : \n";
int i = 0;
foreach (string s in info)
{
i = s.IndexOf('v');
str += s.Substring(i) + "\n";
}
return str;
}

Netsky
جمعه 09 بهمن 1388, 09:46 صبح
سلام به همگی .
بازم با یه کد باحال اومدم . این کد رو بذارید توی Form_Load ببینین چی میـــــــــــــشه ؟!!!!!!!!
البته قبلش باید Namespace زیر رو در برنامتون تعریف کنید . پس در قسمت General اینو بنویسید :



using System.Drawing.Drawing2D;

خب حالا کد زیر رو در قسمت Form_Load قرار بدید و برنامه رو اجرا کنید :



GraphicsPath G = new GraphicsPath();
G.AddEllipse(100, 100, 200, 200);
this.Region = new System.Drawing.Region(G);

Netsky
جمعه 09 بهمن 1388, 14:28 عصر
سلام به همه دوستان عزیز . یه کد دیگه نوشتم که گفتم شاید به دردتون بخوره .
با این کد میتونید نام زیر کلیدهای ( SubKeys ) یک کلید رجیستری رو بدست بیارید .
اول باید Namespace زیر رو در برنامتون تعریف کنید . پس در قسمت General کد زیر رو بنویسید :



using Microsoft.Win32;

خب ، حالا یه لیست باکس روی فرمتون بگذارید و کد زیر رو در Form_Load ( یا یک Event دیگه ) کپی کنید :



RegistryKey Reg;
// Open This Path OF Registry : HKEY_CURRENT_USER\Software
Reg = Registry.CurrentUser.OpenSubKey("Software");
//---------------
listBox1.Items.Clear();
//---------------
foreach (string strSubKeyNames in Reg.GetSubKeyNames())
{
listBox1.Items.Add(strSubKeyNames);
}

نکته : به جای Software میتونید کلید مورد نظر خودتون رو جایگزین کنید .
اگه کسی هم سوالی داشت در خدمتم .
بای بای .........................

Netsky
جمعه 09 بهمن 1388, 21:00 عصر
سلام و عرض ادب به همه دوستان عزیز .
اینم یه کد دیگه که گفتم شاید نیاز داشته باشید . خیلی راحت تاریخ میلادی رو به شمسی تبدیل میکنه . دیگه هم لازم نیست از کامپوننت های عجیب و غریب استفاده کنید .
اینم کد :



System.Globalization.PersianCalendar dtePersianCalendar = new System.Globalization.PersianCalendar();
string Year, Month, Day,strResult;
DateTime Date_Now = DateTime.Now;
//---------------------
Year = dtePersianCalendar.GetYear(Date_Now).ToString();
Month = dtePersianCalendar.GetMonth(Date_Now).ToString();
Day = dtePersianCalendar.GetDayOfMonth(Date_Now).ToStrin g();
strResult = Year + "/" + Month + "/" + Day;
MessageBox.Show(strResult);

بای بای ..........................

Netsky
شنبه 10 بهمن 1388, 14:12 عصر
Hi To All Friend .
اینم یه کد واسه خاموش کردن کامپیوتر . گفتم شاید به دردتون بخوره .



System.Diagnostics.Process.Start("Shutdown.exe", "-s -t 60");

اگه دیدید کامپیوترتون داره خاموش میشه ، Command Prompt رو باز کنید و دستور زیر رو وارد کنید :



shutdown -a

بای بای ..............................

Netsky
یک شنبه 11 بهمن 1388, 18:07 عصر
سلام به همه دوستان .
یه کد دیگه نوشتم که تقدیم میکنم .
با این کد میتونید نام یک Process رو با استفاده از ProcessID اون دریافت کنید .



MessageBox.Show( System.Diagnostics.Process.GetProcessById(4000).To String());

Netsky
یک شنبه 11 بهمن 1388, 19:54 عصر
سلام .
تکه کد زیر رو که مشاهده میکنید فایل رو به حالت Super Hidden میبره . طوری که دیگه در سرچ ویندوز هم پیدا نمیشه .



System.IO.File.SetAttributes ("C:\\Test.txt",FileAttributes.System ^ FileAttributes.Hidden);

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



System.IO.File.SetAttributes("C:\\Test.txt", FileAttributes.Normal);

ali.aghdam
جمعه 16 بهمن 1388, 23:54 عصر
در برنامه ها بهتر است برای زیبا تر شدن و سریع تر کار خودتان با کد صفحه کلید را فارسی کنید
البته نمی دونم این مطلب تکراری است یا نه ولی وظیفه خودم دونستم که این آموزش رو بزارم شاید به درد کسی بخورد شاید

ابتدا namespace زیر را به صفحه کدتان اضافه کنید



using System.Globalization;

سپس دو CultureInfo را به صورت پابلیک تعریف کنید



//Persian
CultureInfo languageFa = new CultureInfo("fa-ir");
//English
CultureInfo languageEn = new CultureInfo("en-us");

و حالا برای فارسی شدن



InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(languageFa);


وبرای انگلیسی شدن



InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(languageEn);


یه نموته می زارم تا یادگیریش راحت تر بشه.

ali.aghdam
شنبه 17 بهمن 1388, 00:25 صبح
دوستان توجه کنید برای شمارش تعداد کلمات یک متن راه حل های زیادی است ولی این یکی رم یاد بگیرید بد نیست

این روش وقتی سر امتحان مباحث ویژه بودم به فکرم رسید



int wordCount = 0;
string[] arr = textBox1.Text.Split(' ');
for (int i = 0; i < arr.Length; i++)
{
if (arr[i].ToString() != "")
{ wordCount++; }
}
MessageBox.Show(wordCount.ToString());
lWord.Text = wordCount.ToString();

rezatati
یک شنبه 18 بهمن 1388, 11:29 صبح
تغییر رنگ پس زمینه دسکتاپ
روشی برای تغییر رنگ پس زمینه دسکتاپ وقتی که پس زمینه عکس نباشه .
دوستان دیگه من اینجا مطلب رو دوباره ننوشتم میتونین برین و از تاپیک زیر مطالعه بفرمایید
http://www.barnamenevis.org/forum/showthread.php?t=203903

ali.aghdam
یک شنبه 18 بهمن 1388, 16:36 عصر
Refactoring به معنای تغییر و نقل و انتقالات در کد با حفظ رفتار اصلی آن است،به بیانی دیگر تغییر در ساختار درونی یک نرم افزار جهت درک بهتر و تغییرات ساده تر آن،بدون تغییر در رفتار قابل مشاهده برنامه.
برای اطلاعات و مثال های بیشتر به پست زیر مراجعه کنید.

http://barnamenevis.org/forum/showthread.php?t=200770

elyass-pc
چهارشنبه 21 بهمن 1388, 04:57 صبح
با سلام
ممنون از زحمتی که می کشید
اگه اینها جمع آوری بشه دسترسی به اونا برا همه آسون تر میشه
لینکی که چند صفحه پیش برا دانلود گذاشتین کار نمیکنه
با تشکر

Netsky
جمعه 23 بهمن 1388, 13:03 عصر
خب اینم یه کد دیگه که کاربردش رو در ادامه میخونید .....
بعضی مواقع پیش میاد که بخایم از داخل یه فولدر ( یا درایو ) یه سری فایل با فرمت خاص ( مثلا exe یا jpg ) رو بدست بیاریم .
نیازی نیست زحمتی به خودتون بدید ، چون بنده کد آماده ش رو در اختیارتون قرار میدم . کد زیر رو ملاحظه بفرمایید :



public void Get_Files_Special_Extention(string Folder)
{
string Extention;
int Case_Sens;
// Case_Sens mean Case Sensitivity.
//======================================

ListBox LSTBOX = new ListBox();
LSTBOX.Size = new Size(300, 400);
this.Controls.Add(LSTBOX);

//======================================

if (!Directory.Exists(Folder))
{
MessageBox.Show("Invalid This Folder : " + Folder, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
foreach(string strFiles in System.IO.Directory.GetFiles(Folder))
{
Extention = Path.GetExtension(strFiles);
//=========
Case_Sens = string.Compare(Extention, ".BMP", true);
//=========
if (Case_Sens == 0)
{
LSTBOX.Items.Add(strFiles);
}
}
}
}

in_the_rain
چهارشنبه 28 بهمن 1388, 00:28 صبح
دوستان سلام
یه تیکه کد نوشتم که واسه بدست اوردنش خیلی اذیت شدم
و میزارم واسه آنهایی که ...
آدمی را آدمیت لازم است -

واسه افزودن یک ماه به تاریخ شمسی هست که با حالت معمولی نشد که حل بشه
public static string addmonthShamsi(string dateSh)
{
string[] part = dateSh.Split('/');
string year = part[0];
string month = part[1];
string day = part[2];
PersianCalendar pcal = new PersianCalendar(); // yek var az noe persian calander
DateTime dt = pcal.ToDateTime(int.Parse(year), int.Parse(month), int.Parse(day), 0, 0, 0, 0);// TABDIL BE MILADI

string result = ConvertToShamsi(pcal.AddMonths(dt, 1).ToShortDateString());
return result;
}

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

مهران رسا
سه شنبه 18 اسفند 1388, 17:55 عصر
Intellisense (http://m8spy.com/) قابلیت پیاده سازی تکمیل خودکار متن است که اولین بار توسط شرکت مایکروسافت و در مجموعه نرم افزارهای Visual Studio برای راحتی کار برنامه نویسان در نظر گرفته شد . به این قابلیت اسامی مشابهی مانند Autocomplete و یا Suggest نیز می توان نسب داد . به طور کلی IntelliSense به برنامه نویسان این امکان را می دهد تا در زمان کد نویسی ، با تایپ قسمتی از دستورات ، (http://m8spy.com/) به شکل کامل دستور دسترسی پیدا کرده و در نتیجه زمان کمتری صرف کنند .
اینتلایزنس علاوه بر دستورات ثابت رایج در زبان های برنامه نویسی (Reserved Words) ، قابلیت تکمیل خودکار نام متغیر ها ، توابع ایجاد شده و متد ها را نیز داراست

به نقل از مایکروسافت :
” اینتلایزنس حاوی مجموعه ای از خصیصه ها است که باعث دسترسی آسان شما به مرجع کاملی از دستورات زبان برنامه نویسی می شود . (http://m8spy.com/) دیگر زمان کد نویسی مجبور نیستید برای انجام عملیات جستجوی عناصر زبان برنامه نویسی (مانند نام توابع ، متغیر ها و …) منطقه کد نویسی خود را ترک کنید. ضمن ادامه دادن به کد نویسی ، می توانید اطلاعاتی که نیاز دارید را به آسانی پیدا کنید . اینتلایزنس عناصر را به طور مستقیم و خودکار برای شما درج کرده و تایپ (کد نویسی) شما را کامل می کند.”

مثالی از چگونگی عملکرد این قابلیت :



http://m8spy.com/PersonalFs/M8SPY_Images/intellisense_1.gif




منبع : http://m8spy.com (http://m8spy.com/)

CYCLOPS
سه شنبه 18 اسفند 1388, 20:53 عصر
تو این (http://barnamenevis.org/forum/showpost.php?p=903696&postcount=396)پست یه روش برای شمارش تعداد کلمات یک جمله ارائه شده
یه راه راحت تر تو یک خط کد :


private void btnCount_Click(object sender, EventArgs e)
{
int count = txtSentences.Text.Replace('\t',' ').Trim().Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries).Length;
lblCount.Text = string.Format("تعداد {0} کلمه در جمله وارد شده وجود دارد .", count.ToString());

}


برنامه نمونه هم تو ضمیمه پست قرار داره . . .

(فایل ضمیمه را دوباره دانلود کنید ؛ قابلیت تشخیص "اسپیس های اضافی" و "کلید های Tab" بین کلمات هم اضافه شد)

با تشکر از ali.aghdam (http://www.barnamenevis.org/forum/member.php?u=132514) به خاطر گوشزد کردن خطای برنامه در زمان استفاده از "اسپیس های اضافی" مابین کلمات . :تشویق:
موفق باشید :چشمک:

Parham.D
پنج شنبه 20 اسفند 1388, 07:27 صبح
از عملگر Xor میتوان برای به رمز درآوردن متن استفاده کرد. ویژگی کار این عملگر این است که اگر یک عدد را دوبار متوالی با عددی دیگر Xor کنید، دوباره به همان عدد اولیه خواهید رسید. برای مثال کد اسکی حرف A را که 65 است با عدد 50 Xor میکنیم. حاصل این عمل عدد 115 است. حال اگر این عدد 115 را دوباره با 50 Xor کنیم به عدد 65 میرسیم. در مثال زیر نمونه کدی را که متن یک TextBox با Xor به حالت رمز درمی‏آورد و از آن خارج میکند بررسی میکنیم.




if ((TextBox.Text != "")) {
if ((SaveFileDialog.ShowDialog == Windows.Forms.DialogResult.OK)) {
FileOpen(1, SaveFileDialog.FileName, OpenMode.Output);
// Encryption codes.
for (int index = 0; (index
<= (TextBox.TextLength - 1)); index++) {
eachLetter = TextBox.Text.Substring(index, 1);
Print(1, Asc(eachLetter), Xor, 369);
}
}
}




در حلقه For Next به اندازه طول متن در TextBox یکی یکی حروف آن خوانده میشوند و بعد از استخراج کد اسکی هر یک در عدد 369 Xor میشوند و عدد حاصل در فایل نوشته میشود. کد از رمز خارج کردن فایل در زیر آمده.




if ((OpenFileDialog.ShowDialog == Windows.Forms.DialogResult.OK)) {
FileOpen(1, OpenFileDialog.FileName, OpenMode.Input);
// Read encrypted numbers from file, convert with Xor and build the string.
for (
; EOF(1);
) {
Input(1, encryptedNumber);
decryptedChr = Chr(encryptedNumber, Xor, 369);
decryptedChr;
}
}




در حلقه Do Until تا زمانی که فایل به انتها نرسیده با دستور Input یکی یکی از آن می‏خواند و در متغیری از نوع Short به نام encryptedNumber دخیره میکند. سپس در خط بعد عدد ذخیره شده دوباره با 369 Xor میشود و همزمان به نوع Char تبدیل میشود. در تصویر زیر نمونه رمزگذاری شده نوشته "Hello World, Just for testing" را مشاهده می‏کنید.


http://barnamenevis.org/forum/attachment.php?attachmentid=45432&d=1268280784

Salar Ashgi
جمعه 21 اسفند 1388, 11:17 صبح
از عملگر Xor میتوان برای به رمز درآوردن متن استفاده کرد. ویژگی کار این عملگر این است که اگر یک عدد را دوبار متوالی با عددی دیگر Xor کنید، دوباره به همان عدد اولیه خواهید رسید.
با تشکر از دوست عزیزمون Parham.D (http://barnamenevis.org/forum/member.php?u=40820)

در تکمیل گفته های ایشون ، منم اثبات این گفته رو در زیر قرار میدم که روش بسیار خوبی جهت رمزنگاری

است .

http://salarcpp.persiangig.com/2/proof.png

با تشکر .

Netsky
جمعه 21 اسفند 1388, 20:35 عصر
سلام دوست عزیز .


می خواستم ببینم مشابه این برای ری استارت ، اسلیپ ،... هم وجود داره ؟!

البته که وجود داره . البته واسه اسلیپ رو نمیدونم ولی واسه Restart میتونی از کد زیر استفاده کنی :



System.Diagnostics.Process.Start("Shutdown.exe", "-r -t 60");

میتونی واسه مقادیر ورودی این تابع وارد Command Prompt بشی و دستور زیر رو وارد کنی :



shutdown/?

اگه بازم مشکلی بود در خدمتم ....... :چشمک:
موفق باشی ...... :لبخندساده:

Alirezanet
دوشنبه 24 اسفند 1388, 07:30 صبح
Zip و Unzip کردن فایل به ساده ترین روش ممکن و کارایی فوق العاده !!!!!!!
لینک اصلی :
http://barnamenevis.org/forum/showpost.php?p=932159&postcount=1
لینک با مثال های Vb.net :
http://barnamenevis.org/forum/showthread.php?t=210178
لینک با مثال ها C# :
http://barnamenevis.org/forum/showthread.php?t=210376

مثال C# نداشت بگین میزارم !! :لبخند:

behrooz123
سه شنبه 25 اسفند 1388, 08:34 صبح
پيدا كردن انديس كوچكترين خانه آرايه

x = Array.IndexOf(arrayname, arrayname.Min());

r00tkit
سه شنبه 25 اسفند 1388, 21:15 عصر
سلام امروز بعد این همه کار با sharpdevelop تازه تبدیل کد های c# به python وVB.NEtو BOO رو توش دیدم:

از منوی project->convert

البته با هاش می شه vb.net رو هم به بقیه تبدیل کرد

SMRAH1
شنبه 29 اسفند 1388, 11:31 صبح
سلام
چند روز قبل نیاز به برنامه ای داشتم که پردازش نسبتا ساده ای رو توی زمان کمی انجام بده!
اول برنامه رو توی C#‎ نوشتم ولی دیدم زمان هر Loop اون زیاده (حدود 250 Tick).به این نتیجه رسیدم که قسمت اصلی پردازش رو توی VC بنویسم و در C#‎ پردازش رو به یک Function که در DLL ای که در VC ساخته بودم محول کنم.ساخت DLL راحت انجام شد (هر Loop پردازش صفر Tick طول می کشید!) ولی در هنگام استفاده مشکلی پیش اومد.در نهایت متوجه دو نکته شدم (هرچند جایی به این صراحت ندیدم ولی کم و بیش به آنها اشاره شده است) که برای دوستانی که احتمالا مانند من می خواهند DLL ساخته خودشان را در C#‎ استفاده (DllImport) کنند،می نویسم:
1) حتما Function درون VC باید از نوع C باشد (از نوع CPP نباشد).
2) حتما نسخه Release خروجی VC (منظور DLL است) را در اختیار برنامه C#‎ بگذارید.
در غیر اینصورت با پیغامی شبیه:

Unable to find an entry point named ...روبرو خواهید شد.
در ضمیمه یک نمونه ساخت DLL در VC و یک نمونه استفاده از آن در C#‎ آمده است.
موفق باشید

Netsky
یک شنبه 01 فروردین 1389, 08:43 صبح
کد اسنیپت چیست ؟

کد اسنیپت ها قطعه کدهایی هستن که ساختار XML داشته و در برنامه نویسی بسیار موثر و مفید هستن . فرض کنید شما در حال نوشتن برنامه ای هستید که باید تا چند روز دیگه اون رو تحویل بدید . بنابراین یکی از فاکتورهای اساسی برای تحویل برنامه سرعت کدنویسیه . حالا بازم فرض کنید که یک قطعه کد دارید که باید در خیلی از جاهای برنامه استفاده بشه . اگه شما مجبور باشید که هر دفعه این قطعه کد رو بنویسید وقتتون به شدت هدر میره . بنابراین باید یه فکر اساسی برای این کار بکنید .
بهترین راه اینه که شما از کد اسنیپت ها استفاده کنید . حالا بیایم با هم یاد بگیریم که چه طوری باید کد اسنیپت بسازیم . از لینک زیر اسلاید آموزشی رو دانلود کنید که به صورت بسیار ساده بهتون ساخت یه کد اسنیپت رو یاد میده . البته قبلش برنامه Snippet Editor رو از اینجا (http://go.microsoft.com/fwlink/?LinkId=46593) ( سایت مایکروسافت ) دانلود کنید .
لینک (http://barnamenevis.biz/forum/showpost.php?p=648545&postcount=26)

حالا که روش ساخت کد اسنیپت رو یاد گرفتید ، اسلاید زیر رو هم ببینید که به شما دوستان عزیز روش استفاده رو هم می آموزه . ( هر دو اسلاید رو باید دانلود کنید ) .
لینک (http://barnamenevis.biz/forum/showthread.php?t=134789)
راستی میتونید از این تاپیک (http://barnamenevis.biz/forum/showthread.php?t=198891) به تعداد زیادی کد اسنیپت دسترسی پیدا کنید .
امیدوارم مورد استفاده دوستان عزیز قرار بگیره .

Salar Ashgi
یک شنبه 08 فروردین 1389, 14:00 عصر
محاسبه تعداد صفحات یک فایل PDF توسط عبارات منظم :



using System.IO;
using System.Text.RegularExpressions;

int PDF_page_counter(string path)
{
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string pdf_text = sr.ReadToEnd();
//======================================
Regex rgx = new Regex(@"/Type\s*/Page[^s]");
MatchCollection matches = rgx.Matches(pdf_text);
return matches.Count;
}
نحوه استفاده :



MessageBox.Show(PDF_page_counter(@"E:\1.pdf").ToString());
منبع : CodeProject

s@nb@l
یک شنبه 29 فروردین 1389, 17:18 عصر
افزودن قطعه كد به ToolBox

قطعه كدي كه زياد مورد استفاده قرار مي گيرد در جعبه ابزار قرار مي دهيم
سپس با كليك كردن روي آن، قطعه كد مورد نظر را در برنامه قرار دهيد.
براي اضافه كردن كد به جعبه ابزار مي تونيد اون رو انتخاب كنيد سپس با ماوس روي جعبه ابزار
drag كنيدو روي دستور كليك راست و Rename كرده و نام بامفهومي به اون بديد و براي استفاده از اين كد در برنامه كافي است كه مكان نما را به جايي كه مي خواهيد كد در آن قرار گيرد ببريد و سپس روي دستور دابل كليك كنيد..

Netsky
شنبه 04 اردیبهشت 1389, 00:34 صبح
اين هم يه روش جالب براي برعكس كردن يك رشته با استفاده از يك آرايه .
ابتدا اين تابع رو داخل برنامتون كپي كنيد :


public static string Reverse_String(string My_Text)
{
char[] My_Array = My_Text.ToCharArray();
Array.Reverse(My_Array);
return (new string(My_Array));
}

حالا ميتونيد به اينصورت ازش استفاده كنيد :


MessageBox.Show(Reverse_String("Alireza"));
موفق باشيد ........

Netsky
جمعه 17 اردیبهشت 1389, 13:02 عصر
Snippet Compiler برنامه كوچكي است كه قابليت اجراي كدهاي كوچك C#‎ و VB.Net را دارا ميباشد . فرض كنيد كه ميخايد يك قطعه كد كوچك را تست كنيد . بايد ابتدا ويژوال استديو را باز كنيد و سپس يك پروژه جديد ايجاد كرده و كد خود را تست كنيد . انجام اين چند مرحله واقعا در بعضي مواقع كلافه كننده است . حالا با استفاده از اين برنامه كوچك و كم حجم ميتوانيد به سرعت قطعه كد مورد نظر خود را آزمايش كنيد . همچنين اين برنامه قابليت اينتلايزنس (http://barnamenevis.org/forum/showpost.php?p=928541&postcount=402) را نيز دارا ميباشد . بعد از اينكه برنامه را دانلود كرديد قطعه كد خود را در قسمت RunSnippet قرار دهيد و با فشردن كليد F5 كد مورد نظرتان را آزمايش كنيد .

http://barnamenevis.org/forum/attachment.php?attachmentid=48568&stc=1&d=1273222937
سايت سازنده (www.sliver.com)
لينك دانلود مستقيم (http://www.sliver.com/Downloads/SnippetCompiler_3.0.2.zip) با حجم 1.2 مگابايت
منبع : فراسان (http://farasun.wordpress.com/2010/04/24/snippet-compiler/)

ali.aghdam
یک شنبه 19 اردیبهشت 1389, 23:07 عصر
چک کردن وضعیت Aero در ویندوز (http://aliaghdam.blogspot.com/2010/05/aero.html)

saber187518
سه شنبه 21 اردیبهشت 1389, 07:01 صبح
اگه بخوایم داده تکراری وارد وارد جدول نکنیم. میشه از قطعه کد زیر کمک گرقت.


SqlDataAdapter1.Fill(DataSet1, "m1")
DataGridView1.DataSource = DataSet1
DataGridView1.DataMember = "m1"

که البته باید قبل از دستور insert و بعد از دستور select قرار بگیره.
بعد با یک جستجوی ساده روی اطلاعات دیتا گرید میشه فهمید که اطلاعات تکراری هست یا نه.
---------------------------------------------------
اللهم العن قاتلی فاطمه الزهرا

Peyman.Gh
شنبه 25 اردیبهشت 1389, 12:32 عصر
اجرا کردن یک برنامه بدون نمایش دادن پنجره آن یعنی فقط در Process قرار دارد و اجرا میشود.

System.Diagnostics.ProcessStartInfo process_i = new System.Diagnostics.ProcessStartInfo();
process_i.FileName = "Notepad.Exe";
process_i.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = process_i; process.Start();


دادن اولویت به یک پردازش (Set Priority)
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName= "Notepad.Exe";
process.Start();
process.PriorityClass = System.Diagnostics.ProcessPriorityClass.High; //High - Normal - AboveNormal - RealTime - Low

Netsky
شنبه 25 اردیبهشت 1389, 17:58 عصر
اگه در برنامتون بخايد از برقراري ارتباط با اينترنت اطمينان حاصل كنيد ، كد زير اين كار رو براتون انجام ميده :


bool NETAVL;
Microsoft.VisualBasic.Devices.Network AVL = new Microsoft.VisualBasic.Devices.Network();
NETAVL = AVL.IsAvailable;

switch (NETAVL)
{
case true:
MessageBox.Show("Internet Is Available");
break;
case false:
MessageBox.Show("Internet Is Not Available");
break;
}

البته قبلش يادتون باشه رفرنس Microsoft.VisualBasic رو به پروژتون اضافه كنيد .
موفق باشيد .........
موفق باشيد .............

ali.aghdam
سه شنبه 28 اردیبهشت 1389, 21:29 عصر
بررسی نحوه استفاده از Optional Parameters در C#‎ 4.0 و VB و PHP و Java Script (http://aliaghdam.blogspot.com/2010/05/optional-parameters-c-vbphpjava-script.html)

ali.aghdam
شنبه 08 خرداد 1389, 19:23 عصر
الگوی شی گرایی Lazy Initialization در .NET 4 (http://aliaghdam.blogspot.com/2010/05/lazy-initalization-net-4.html)

ali.aghdam
شنبه 08 خرداد 1389, 19:24 عصر
الگوی شی گرایی Lazy Initalization در .NET 4 (http://aliaghdam.blogspot.com/2010/05/lazy-initalization-net-4.html)

meysamkarimi
شنبه 15 خرداد 1389, 22:05 عصر
ابتدا خاصیت AllowDrop را در تری‏ویو برابر با true می‏نمائیم.




private void treeView_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}

private void treeView_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}

private void treeView_DragDrop(object sender, DragEventArgs e)
{
TreeNode SourceNode;
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt);
SourceNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");

if (DestinationNode != SourceNode)
{
DestinationNode.Nodes.Add((TreeNode)SourceNode.Clo ne());
DestinationNode.Expand();

//Remove Original Node
SourceNode.Remove();
}
}

ali.aghdam
دوشنبه 17 خرداد 1389, 15:39 عصر
نحوه ساخت فرم های با اشکال متفاوت با کنار های شیشه ای به صورت زیر (http://aliaghdam.blogspot.com/2010/06/blog-post.html)


http://3.bp.blogspot.com/_4GSTeWyiRnY/TAzWejjSIcI/AAAAAAAAAEY/lQp7oBlIkeo/s320/06-07-2010+03-51-57+%D8%A8.jpg

http://3.bp.blogspot.com/_4GSTeWyiRnY/TAzRMtdOAuI/AAAAAAAAADw/FJ3MOzqZym8/s320/06-07-2010+03-22-46+%D8%A8.png

MSN_Issue
جمعه 21 خرداد 1389, 12:16 عصر
تبدیل عکس به رشته و بازگردانی آن ...


// Setup: Create a base64 string containing the image bytes

System.Drawing.Image img = System.Drawing.Image.FromFile(@"c:\pict1.jpg");
System.IO.MemoryStream ms = new System.IO.MemoryStream(); img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
string b64 = Convert.ToBase64String(ms.ToArray());
// Housecleaning: Get rid of the local instances
img.Dispose();
ms.Close();



// Here's where aikeith's relevance starts

byte[] b;
b = Convert.FromBase64String(b64);
ms = new System.IO.MemoryStream(b);
img = System.Drawing.Image.FromStream(ms);



// Since this is a console app, save file so I can see if it works.

img.Save(@"c:\pict1_from_b64.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
// Housecleaning: Get rid of the local instances
ms.Close();

MSN_Issue
دوشنبه 24 خرداد 1389, 05:13 صبح
سلام بر مدیریت عزیز و زحمت کش از حضرتعالی خواستارم چنانچه مقدور هست مطالب این صفحه تبدیل بهpdf شده تا بتوانیم دانلود کنیم چون اگر بخواهیم به صورت آنلانین مطالعه کنیم دارای محدودیت زمان هستیم و مشکل خواهد بود (محدودیت از نظر internet)(هر چه بیشتر این مطالب pdf و قابل دانلود باشد برای ما راحت ترخواهد بود ){ jimjimy12@gmail.com}
سلام دوست عزیز
من تعدادی از این نکات رو که برای خودم مفید و تازه بوده رو pdf کردم ...
آپ میکنم تا شاید به درد شماهم بخوره ...

masoud903
چهارشنبه 26 خرداد 1389, 10:51 صبح
با سلام
من تمامی این نکات رو در قالب pdf برای دوستان آماده کردم لینکشو میذارم
(پست قبلی رو اشتباه گذاشتم)

http://www.4shared.com/file/nPCRmSS-/c_online.html

ایمان اختیاری
شنبه 29 خرداد 1389, 10:00 صبح
اگه میخواین توی textbox یا کنترل های دیگه چند خط مطلب نویسید به اینصورت که هر مطلب در خط جدید باشه در انتهای مطلبی که می خواین به خط جدید منتقل بشه دستور زیر رو بنویسید :
textBox1.Text += Environment.NewLine;

MSN_Issue
دوشنبه 31 خرداد 1389, 05:10 صبح
برای حل مشکل استفاده از اکسس در سیستم های 64بیتی ، به آدرس زیر مراجعه کنید ...
http://barnamenevis.org/forum/showpost.php?p=1019661&postcount=6

behrooz123
چهارشنبه 02 تیر 1389, 21:21 عصر
تغییر فرمت textbox و label

textBox1.DataBindings.Add("Text",myDataSet,"UnitCost",true,DataSourceUpdateMode.OnValidation,0,"C");
Table of Formats--------------------------------------------------------------------------------------------------------------------------------
Type Format Example
--------------------------------------------------------------------------------------------------------------------------------
Currency C $1,234.50

Scientific
Exponential E 1.234.50E+004
Percentage P 45.6%
Fixed Decimal F? ?=no.decimals Ex. F3=123.4000
ShortDate d M/d/yyyy
LongDate D MMMM dd, yyyy
Long Date
Short Time f dddd,MMMM dd, yyyy HH:mm aa
Long Date
Long time F dddd,MMMM dd yyyy HH:mm:ss:aa
Month & Day M MMMM dd

General G Date & Time format depends on system locale settings
------------------------------------------------------------------------------------------------------------------------------

Iran58
شنبه 12 تیر 1389, 14:58 عصر
فقط حروف انگلیسی وارد شود
این کد در برابر Paste هم محفوظه

private void textBox1_TextChanged(object sender, EventArgs e)
{
for (int i = 0; i < textBox1.Text.Length; i++)
{
int charCode = char.ConvertToUtf32(textBox1.Text, i);
if (!(charCode >= 65 && charCode <= 90) && !(charCode >= 97 && charCode <= 122))
{
textBox1.Text = textBox1.Text.Remove(i--, 1);
textBox1.Select(textBox1.Text.Length, 0);
}
}
}

mmd2009
دوشنبه 14 تیر 1389, 02:53 صبح
دوستان عزیز با این کد میتونید با کمترین کد نویسی و با وسیله ی ارایه ها میتونید تعداد هر نوع فیلدی در بانکتون رو محاسبه بکنید و در خروجی قرار دهید



string address = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "/nemune.mdb";
string[] type = new string[2];
type[0]="Console _ Thread _ Control";
type[1]="Database";

Int16[] mizan = new Int16[2];
OleDbConnection con = new OleDbConnection(address);
OleDbCommand cmd = new OleDbCommand("sample", con);
con.Open();
for (int i = 0; i <= 1; i++)
{
cmd.CommandText = "select count(type) from sample where type='" + type[i] + "'";
mizan[i] = Convert.ToInt16(cmd.ExecuteScalar().ToString());
cmd.Cancel();
}
label7.Text = mizan[0].ToString();
label8.Text = mizan[1].ToString();
con.Close();

javad_r_85
دوشنبه 14 تیر 1389, 08:02 صبح
private void button1_Click(object sender, EventArgs e)
{
this.Opacity = 1;
for (int i = 0; i < 100; i++)
{
this.Opacity -= 0.01;
Application.DoEvents();
}
}this به آبجکت فعلی از فرم اشاره دارد.






کد صحیح آن به این صورت است که ابتدا یک timer1 و یک button در فرم قرار داده و سپس کدهای زیر را به آن اضافه میکنیم.

private void button1_Click(object sender, EventArgs e)
{


timer1.Enabled = true;

}




private void timer1_Tick(object sender, EventArgs e)
{

this.Opacity -= 0.03;
{

Iran58
دوشنبه 21 تیر 1389, 14:16 عصر
ساخت یک ستون AutoNumber برای گرید ویو


private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
dataGridView1.Rows[e.RowIndex].Cells[0].Value = e.RowIndex + 1;
}

#aliyari_C
پنج شنبه 24 تیر 1389, 23:22 عصر
نتایج آماری , مقایسه بین دو کلاس String و StringBuilder

http://www.barnamenevis.org/forum/showthread.php?t=233987

ali.aghdam
جمعه 25 تیر 1389, 01:20 صبح
اضافه کردن آیکن به UserControl برای نمایش در ToolBox (http://barnamenevis.org/forum/showthread.php?t=234182)
(http://barnamenevis.org/forum/showthread.php?t=234182)
(http://barnamenevis.org/forum/showthread.php?t=234182)
(http://barnamenevis.org/forum/showthread.php?t=234182)
http://up.iranblog.com/Files/5595ac2275684a12bc1e.JPG (http://barnamenevis.org/forum/showthread.php?t=234182)

(http://barnamenevis.org/forum/showthread.php?t=234182)

Salar Ashgi
شنبه 26 تیر 1389, 00:10 صبح
تولید اعداد تصادفی بصورت کاملتر :


string Random()
{
List<string> list = new List<string>();
string[] strs = { "123456789", "abcdefghijklmnopqrstuvwxyz" };
foreach (string s in strs)
{
char[] a = s.ToCharArray();
foreach (char ch in a)
{
list.Add(ch.ToString());
}
}
list = list.OrderBy(n => (Guid.NewGuid())).ToList<string>();
string res = "";
foreach (string s in list)
{
res += s;
}
return res;
}

Salar Ashgi
شنبه 26 تیر 1389, 00:30 صبح
کار با توابع روی کالکشن های جنریک :

حذف عناصر تکراری :


List<int> list = new List<int> { 4, 5, 3, 6, 3, 5, 5, 5, 9, 7, 3 };
list = list.Distinct().ToList<int>();//4,5,3,6,9,7


اشتراک دو لیست :


List<int> list = new List<int> { 4, 5, 3, 6, 3, 5, 5, 5, 9, 7, 3 };
List<int> list2 = new List<int> { 6, 7, 12, 18, 2 };
List<int> list3 = list.Intersect(list2).ToList<int>();//6,7


اجتماع دو لیست :


List<int> list = new List<int> { 4, 5, 3, 6, 3, 5, 5, 5, 9, 7, 3 };
List<int> list2 = new List<int> { 6, 7, 12, 18, 2 };
List<int> list3 = list.Union(list2).ToList<int>();//4,5,3,6,9,7,12,18,2


عناصر یک لیست به جز لیست دوم :


List<int> list = new List<int> { 4, 5, 3, 6, 3, 5, 5, 5, 9, 7, 3 };
List<int> list2 = new List<int> { 6, 7, 12, 18, 2 };
List<int> list3 = list.Except(list2).ToList<int>();//4,5,3,9


پرش از تعدادی عنصر :


List<int> list2 = new List<int> { 6, 7, 12, 18, 2 };
List<int> list3 = list2.Skip(2).ToList<int>();//12,18,2


Shuffle کردن لیست : (چینش تصادفی لیست)


List<int> list2 = new List<int> { 6, 7, 12, 18, 2 };
List<int> list3 = list2.OrderBy(i => (Guid.NewGuid())).ToList<int>();


الحاق دو لیست :


List<int> list = new List<int> { 4, 5, 3, 6, 3, 5, 5, 5, 9, 7, 3 };
List<int> list2 = new List<int> { 6, 7, 12, 18, 2 };
List<int> list3 = list2.Concat(list).ToList<int>();


اینها یکسری متودهای مهم و پرکاربرد بودند ، بقیه متودها را با بررسی میتوان بدست آورد .

Mohagheghi
پنج شنبه 31 تیر 1389, 16:08 عصر
[/URL]ساختن قالب از یک فرم(آیتم) برای استفاده های بعدی (http://mohagheghi.blogsky.com/1389/04/31/post-5/)

ساختن قالب از یک پروژه برای استفاده های بعدی (http://mohagheghi.blogsky.com/1389/04/30/post-3/)



[URL]http://mohagheghi.blogsky.com

حجتی نیا
سه شنبه 05 مرداد 1389, 09:42 صبح
غیرفعال کردن کلید خروج در فرم

در فرمها میشه کلیدهای minimize و maximize رو بتنهایی حذف کرد اما امکان حذف کلید خروج وجود نداره،برای غیرفعال کردنش از این کد استفاده کنید.. (البته میشه controlbox رو false کرد اما با این کار همه کلیدها حذف میشن)
ابتدا این رو به پروژتون اضافه کنین :

using System.Runtime.InteropServices;
در کلاس اینهارو وارد کنید :

private const int MF_BYPOSITION = 0x400;

[DllImport("User32")]
private static extern int RemoveMenu(IntPtr hMenu, int nPosition, int wFlags);

[DllImport("User32")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

[DllImport("User32")]
private static extern int GetMenuItemCount(IntPtr hWnd);
در زمان اجرا برای غیرفعال کردن این کلید از این کد استفاده کنید :

IntPtr hMenu = GetSystemMenu(this.Handle, false);
int menuItemCount = GetMenuItemCount(hMenu);
RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION);

Mohagheghi
چهارشنبه 06 مرداد 1389, 09:35 صبح
مقاله (فارسی) (http://visualstudio.blogsky.com/1389/05/06/post-6/)
[/URL]
[URL="http://visualstudio.blogsky.com/1389/05/06/post-6/"]آموزش گام به گام ایجاد کنترل های سفارشی در سی شارپ (http://visualstudio.blogsky.com/1389/05/06/post-6/)








http://mohagheghi.blogsky.com (http://mohagheghi.blogsky.com/)

Iran58
شنبه 09 مرداد 1389, 07:39 صبح
private void txtEmail_TextChanged(object sender, EventArgs e)
{

System.Text.RegularExpressions.Regex regex;
regex = new System.Text.RegularExpressions.Regex(@"^\S+@\S+\.\S+$");
Control ctrl = (Control)sender;
if (regex.IsMatch(ctrl.Text))
{
errorProvider1.SetError(ctrl, "");
}
else
{
errorProvider1.SetError(ctrl, "Not a valid email.");
}
}

ایمان مدائنی
دوشنبه 11 مرداد 1389, 16:13 عصر
فارسي كردن صفحه كليد در هنگام لود شدن فرم :

InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.Cul tureInfo.CreateSpecificCulture("fa-IR"));

Iran58
دوشنبه 11 مرداد 1389, 16:44 عصر
private void txtPass_TextChanged(object sender, EventArgs e)
{
System.Text.RegularExpressions.Regex regex;
regex = new System.Text.RegularExpressions.Regex(@"^[a-zA-Z]\w{3,12}$");
Control ctrl = (Control)sender;
if (regex.IsMatch(ctrl.Text))
{
errorProvider1.SetError(ctrl, "");
}
else
{
errorProvider1.SetError(ctrl, "Not a valid Password.");
}
}

FastCode
دوشنبه 11 مرداد 1389, 17:19 عصر
private void txtPass_TextChanged(object sender, EventArgs e)
{
System.Text.RegularExpressions.Regex regex;
regex = new System.Text.RegularExpressions.Regex(@"^[a-zA-Z]\w{3,12}$");
Control ctrl = (Control)sender;
if (regex.IsMatch(ctrl.Text))
{
errorProvider1.SetError(ctrl, "");
}
else
{
errorProvider1.SetError(ctrl, "Not a valid Password.");
}
}
من یه مدتی دنبال همین برای email میگشتم.
این هم از طرف من اینجا باشه.
فقط باید تمام کامنت های email با whitespace عوض بشن.



(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
\t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
\t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
\t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)



این لینک ۱:http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
این هم لینک ۲:http://www.ietf.org/rfc/rfc0822.txt?number=822

ایمان مدائنی
سه شنبه 12 مرداد 1389, 13:33 عصر
براي اينكه بتونيم با زدن اينتر فوكوس رو تغير بديم از كد زير استفاده مي كنيم

private void textbox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{TAB}");
}
}

ایمان مدائنی
سه شنبه 12 مرداد 1389, 13:40 عصر
براي باز كردن ماشين حساب ويندوز از طريق كد ، از كد زير استفاده مي كنيم :
System.Diagnostics.Process.Start("calc");

ایمان مدائنی
سه شنبه 12 مرداد 1389, 13:41 عصر
براي اينكه كاربر نتونه بازدن alt+f4 فرم رو ببنده از كد زير استفاده مي كنيم :

private void form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.F4)
{
e.SuppressKeyPress = true;
}
}

Esmail Solhkhah
پنج شنبه 14 مرداد 1389, 01:37 صبح
public static DataTable GetDataGridViewDataSource(DataGridView dgv)
{
DataTable dt = new DataTable("dt");
try
{
List<DataGridViewRowInfo> MyColumns = new List<DataGridViewRowInfo>();
foreach (DataGridViewColumn dgvC in dgv.Columns)
{
if (dgvC.Visible != false && dgvC.Name.ToLower() != "grd_id")
{
DataGridViewRowInfo info = new DataGridViewRowInfo(dgvC.Name, dgvC.HeaderText);
MyColumns.Add(info);
}
}
foreach (DataGridViewRowInfo info in MyColumns)
{
DataColumn dc = new DataColumn(info.HeaderText);
dt.Columns.Add(dc);
}
for (int i = 0; i != dgv.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
foreach (DataGridViewRowInfo info in MyColumns)
{
dr[info.HeaderText] = dgv.Rows[i].Cells[info.Name].EditedFormattedValue.ToString();
}
dt.Rows.Add(dr);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return dt;
}




public class DataGridViewRowInfo
{
string _Name;
string _HeaderText;
public DataGridViewRowInfo()
{
}
public DataGridViewRowInfo(string name, string headerText)
{
_Name = name;
_HeaderText = headerText;
}
public string Name { get { return _Name; } set { _Name = value; } }
public string HeaderText { get { return _HeaderText; } set { _HeaderText = value; } }
public override string ToString()
{
return _HeaderText;
}
}

hojjatshariffam
پنج شنبه 14 مرداد 1389, 12:14 عصر
براي اينكه كاربر نتونه بازدن alt+f4 فرم رو ببنده از كد زير استفاده مي كنيم :

private void form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.F4)
{
e.SuppressKeyPress = true;
}
}



این کد رو ببینید:

protected override void OnClosing(CancelEventArgs e)
{
if (MessageBox.Show("آیا برای خروج از برنامه اطمینان دارید؟", "اخطار", MessageBoxButtons.YesNo) != DialogResult.Yes)
e.Cancel = true;
else
{
base.OnClosing(e);
}
}

خیلی بهینه تره
نیاز هم نداره که ALT+F4 هم چک بشه ، همه انواع بسته شدن ها رو (البته بجز اتمام کار پروسس) شامل میشه
تازه میتویند کلید ها رو هم چک کنید
ضمنا فقط کافیه داخل فرم کپی کنید

hojjatshariffam
پنج شنبه 14 مرداد 1389, 12:36 عصر
براي اينكه بتونيم با زدن اينتر فوكوس رو تغير بديم از كد زير استفاده مي كنيم

private void textbox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{TAB}");
}
}


اینم یه امتحانی بکنید

private void ctrl_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char) Keys.Enter)
{
e.Handled = true;
Control ctrl = sender as Control;
SelectNextControl(ctrl, true, true, true, true);
}
}

اینو برای همه کنترل های فرمتون می تونید یکجا استفاده کنید
یعنی برای رویداد KeytPress تک تک کنترل ها مانند تکست باکس ها ، چک باکس ها ، کامبو باکس ها و ... انتخاب کنید
اینطوری دیگه لازم نیست برای هر کدومشون یک رویداد مجزا بنویسید
خودش تشخیص میده و میره به کنترل بعدی

ali.aghdam
پنج شنبه 14 مرداد 1389, 17:26 عصر
قوی ترین ابزار برای محافظت از کد برنامه شما! به این پست مراجعه کنید
(http://barnamenevis.org/forum/showpost.php?p=1058304&postcount=3)

Iran58
چهارشنبه 20 مرداد 1389, 07:51 صبح
private void Form1_Load(object sender, EventArgs e)
{
Screen scr = Screen.PrimaryScreen;
this.Left = (scr.WorkingArea.Width - this.Width) / 2;
this.Top = (scr.WorkingArea.Height - this.Height) / 2;
}

احمد سامعی
چهارشنبه 20 مرداد 1389, 09:54 صبح
نمايش فرم در وسط صفحه


برای این کار کافیه خاصیت StartPosition فرم تنظیم کنید. کد جناب Iran58 در پست456 زمانی بدرد می خوره که در یک نقطه خواص بخواهید فرم باز بشه

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScree n;

sinashahab
سه شنبه 02 شهریور 1389, 17:14 عصر
سلام دوستان

حتما شما در داخل ویندوز تا حالا با این برخورد کردید که بعضی وقت ها بر روی بعضی دکمه ها کلیک می کنید و آنها Enable نیستن صدا ی Beep میاد .:کف:

حالا من با این کدی که کذاشتم می تونید این کارو برای هر دکمه یا کنترلی روی فرمتون بزارید
اینم از کدش :

System.Media.SystemSounds.Beep.Play();
System.Media.SystemSounds.Asterisk.Play();
System.Media.SystemSounds.Hand.Play();
System.Media.SystemSounds.Exclamation.Play();


این صدا ها خیلی کاربرد دارن و می تونید از اونا مثلا برای وقتی که یه پیغام به نمایش گذاشته میشه استفاده کنید .


یه نوع دیگه از این صدا ها که نوع صداش به خودتون بستگی داره::چشمک:

این صدا رو با استفاده از دستورات API و فرکانس صدا به اجرا میزارید :

[DllImport("kernel32.dll")]
public static extern bool Beep(int freq, int duration);


و بعدش در داخل event مربوط به کنترلتون مثل دیکمه :

Beep(4000, 1000);

اولین پارامتر ورودی برای فرکانس صدا و دومی برای مدت زمان پخش هست .

خوب من اینم بگم :
من از این دستور آخری که API هست وقتی توی VB6 استفاده می کردم صدا از داخل کیس میومد یعنی از بلندگوی مادربرد میومد ولی حالا توی .Net از داخل Speaker میاد :افسرده:.

ولی اینم بگم قدرت VB6 توی دستورات API خیلی بیشتر از C#‎‎‎ بود چون توی اون بدون واسطه و .... (CRL) بودش . قبلا حتی برای بازی هامم ازش استفاده می کردم :خجالت::لبخند:.

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

mmd2009
جمعه 05 شهریور 1389, 10:59 صبح
مینی مایز کردن تمامی پنجره های ویندوزی با استفاده از Invoke

البته نمیدونم قبلا گذاشته شده یا نه. ولی خب منم گذاشتمش شاید به درد کسی خورد.

مدیران عزیز اگر گذاشته شده قبلا امیدوارم
پست رو پاک کنید.



Type typeS = null;
object os = Type.Missing;
typeS = Type.GetTypeFromProgID("Shell.Application");
os = Activator.CreateInstance(typeS);
typeS.InvokeMember
("MinimizeAll", System.Reflection.BindingFlags.InvokeMethod, null, os, null);

مهدی فرزاد
جمعه 05 شهریور 1389, 13:36 عصر
سلام
یک روش برای حذف آیتمهایی که در CheckListBox تیک نخوردن

while (checkedListBox1.Items.Count - checkedListBox1.CheckedItems.Count >0)
{
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemCheckState(i) == CheckState.Unchecked)
checkedListBox1.Items.RemoveAt(i);
}
}

FastCode
جمعه 05 شهریور 1389, 16:41 عصر
سلام
یک روش برای حذف آیتمهایی که در CheckListBox تیک نخوردن

while (checkedListBox1.Items.Count - checkedListBox1.CheckedItems.Count >0)
{
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemCheckState(i) == CheckState.Unchecked)
checkedListBox1.Items.RemoveAt(i);
}
}
منطقش کاملاً غلطه.
باید بشه:


for (int i = 0; i < checkedListBox1.Items.Count; i++)
if (checkedListBox1.GetItemCheckState(i) == CheckState.Unchecked)
checkedListBox1.Items.RemoveAt(i--);

milligator
یک شنبه 07 شهریور 1389, 16:58 عصر
چک کردن اینکه آیا کلید capslock یا numlock روشن هست یا نه

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true,
CallingConvention=CallingConvention.Winapi)]
public static extern short GetKeyState(int keyCode);

bool isCapsLock = (((ushort) GetKeyState(0x14 /*VK_CAPITAL*/)) & 0xffff) != 0;
bool isNumLock = (((ushort) GetKeyState(0x90 /*VK_NUMLOCK*/)) & 0xffff) != 0;

jeson_park
شنبه 13 شهریور 1389, 16:22 عصر
با سلام
این هم از اولین نکته من :قلب:
امیدوارم که تکراری نباشه :خجالت:

لیست برنامه ها نصب شده در مسیر زیر درون رجیستری قرار میگیره:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Uninstall

خب حالا برای بدست آوردنشون:

private void GetInstalledPrograms()
{
RegistryKey localmachine = Registry.LocalMachine;
RegistryKey uninstall = localmachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstal l");
foreach (string key in uninstall.GetSubKeyNames())
{
RegistryKey activeKey = uninstall.OpenSubKey(key);
string displayName = (string)activeKey.GetValue("DisplayName");
if (!String.IsNullOrEmpty(displayName))
listBox1.Items.Add(displayName);
}
}

موفق باشین :لبخند:

donny6202
جمعه 19 شهریور 1389, 14:33 عصر
کلا برای اینکه با هر کنترلی نتونید فرم رو ببندید :

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}

donny6202
شنبه 20 شهریور 1389, 14:36 عصر
از روش ساده زیر هم میشه برای تعیین عدد بودن یک رشته استفاده کرد :

توسط یک متود :

private bool str_is_digit(string str)
{
bool res = true;
foreach (char c in str)
{
if (!char.IsDigit(c))
{
res = false;
break;
}
}
return res;
}



یه روش خیلی راحت تر هم هست :

public bool isnumber(string s)
{
try
{
int i = int.Parse(s);
return true;
}
catch
{
return false;
}
}

mmd2009
یک شنبه 21 شهریور 1389, 22:16 عصر
با کدهای زیر شما میتونید یک رشته و یک پیکچر باکس رو معرفی بکنید و رشته تبدیل به عکس بشه مانند شکل زیر:

http://programming.ramiz.ir/images/stories/untitled%283%29.jpg



public void RenderRainbowText(string Text, PictureBox pb)
{
// PictureBox needs an image to draw on
pb.Image = new Bitmap(pb.Width, pb.Height);
using (Graphics g = Graphics.FromImage(pb.Image))
{
// create all-white background for drawing
SolidBrush brush = new SolidBrush(Color.White);
g.FillRectangle(brush, 0, 0,
pb.Image.Width, pb.Image.Height);
// draw comma-delimited elements in multiple colors
string[] chunks = Text.Split(',');
brush = new SolidBrush(Color.Black);
SolidBrush[] brushes = new SolidBrush[] {
new SolidBrush(Color.Red),
new SolidBrush(Color.Green),
new SolidBrush(Color.Blue),
new SolidBrush(Color.Purple) };
float x = 0;
for (int i = 0; i < chunks.Length; i++)
{
// draw text in whatever color
g.DrawString(chunks[i], pb.Font, brushes[i], x, 0);
// measure text and advance x
x += (g.MeasureString(chunks[i], pb.Font)).Width;
// draw the comma back in, in black
if (i < (chunks.Length - 1))
{
g.DrawString(",", pb.Font, brush, x, 0);
x += (g.MeasureString(",", pb.Font)).Width;
}
}
}
}

طرز استفاده :



private void button1_Click(object sender, EventArgs e)
{
RenderRainbowText(" mojtaba,Dinarvand ", pictureBox1);
}
منبع : stackoverflow.com

Alirezanet
دوشنبه 12 مهر 1389, 23:25 عصر
سلام
امروز برای دوستانی که با Extension های Visual Studio آشنا نیستند شروع به نوشتن یه مقاله کوچیک کردم . که پیشنهاد میکنم اگه ازشون استفاده نمیکنید حتما یه نگاهی بندازید :
http://barnamenevis.org/forum/showthread.php?t=251272
موفق باشید .

علیرضا حسن زاده
چهارشنبه 28 مهر 1389, 18:58 عصر
سلام؛ نمی دونم قبلا کسی این مطلب رو پست کرده یا نه (من ندیدم)
برای Scroll کردن به یه سطر که از طریق کد انتخاب شده می تونید از Property زیر استفاده کنید (البته 3 تا پروپرتی تقریبا هم نام هم برای Scroll به ستون ها هم وجود داره)
dataGridView1.FirstDisplayedScrollingRowIndex
با قرار دادن Index سطری که انتحاب شده در این Property به صورت اتوماتیک سطر انتخاب شده اولین سطر نمایش داده شده در DataGrid خواهد بود:خجالت:

hojjatshariffam
پنج شنبه 29 مهر 1389, 20:04 عصر
سلام؛ نمی دونم قبلا کسی این مطلب رو پست کرده یا نه (من ندیدم)
برای Scroll کردن به یه سطر که از طریق کد انتخاب شده می تونید از Property زیر استفاده کنید (البته 3 تا پروپرتی تقریبا هم نام هم برای Scroll به ستون ها هم وجود داره)
dataGridView1.FirstDisplayedScrollingRowIndex
با قرار دادن Index سطری که انتحاب شده در این Property به صورت اتوماتیک سطر انتخاب شده اولین سطر نمایش داده شده در DataGrid خواهد بود:خجالت:
خب کاملا درسته دوست من
من قبلا از کد زیر هم استفاده کردم

TodayGridView.FirstDisplayedCell = TodayGridView.Rows[Search_FindIndex].Cells[2];
or
TodayGridView.FirstDisplayedRow = TodayGridView.Rows[Search_FindIndex];

Salar Ashgi
یک شنبه 30 آبان 1389, 19:16 عصر
تبدیل یک عکس به معادل GrayScale (تبدیل عکس رنگی به سیاه سفید) آن بصورت خیلی ساده و بهینه :

public Bitmap GrayScale_Maker(Bitmap bmp)
{
Bitmap res = new Bitmap(bmp.Width, bmp.Height);
for (int i = 0; i < bmp.Height; i++)
{
for (int j = 0; j < bmp.Width; j++)
{
Color cr = bmp.GetPixel(j, i);
int code = (int)((cr.R + cr.B + cr.G) / 3);
res.SetPixel(j, i, Color.FromArgb(code, code, code));
}
}
return res;
}

با این الگوریتم RGB هر رنگ پیکسل پیدا شده و مجموع آنها تقسیم بر 3 ، RGB های تصویر جدید میشوند ./

Salar Ashgi
یک شنبه 30 آبان 1389, 19:28 عصر
استفاده از برخی متودهای کاربردی فضای نام Microsoft.VisualBasic :
(راهنمای افزودن فضای نام به رفرنس های پروژه ، در عکسهای ضمیمه)

مثال : بررسی عدد بودن یک رشته :

if (Microsoft.VisualBasic.Information.IsNumeric("1234abc"))
MessageBox.Show("YES");
else
MessageBox.Show("NO");

Salar Ashgi
یک شنبه 30 آبان 1389, 19:43 عصر
تولید اعداد تصادفی "تقریبا یکتا توسط کلاس Guid و با دستورات LINQ :

string Random_Int()
{
char[] a = (from ch in Guid.NewGuid().ToString().ToCharArray().OfType<char>()
where char.IsDigit(ch)
select ch).ToArray();
string str = new string(a);
return str;
}

sajadjamalian
پنج شنبه 21 بهمن 1389, 19:04 عصر
سلام دوستان:
آموزش رسم نمودار در سی شارپ به وسیله MSCHART:
این فایل word جمع آوری آموزشهایی هست که توی تاپیک زیر داده بودم، گفتم خالی از لطف نیست اینجا هم باشه،
http://barnamenevis.org/showthread.php?272474-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B1%D8%B3%D9%85-%D9%86%D9%85%D9%88%D8%AF%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%A8%D9%87-%D9%88%D8%B3%DB%8C%D9%84%D9%87-MSCHART
امیدوارم دوستان بتونن استفاده کنن:

r00tkit
دوشنبه 22 فروردین 1390, 10:51 صبح
تو کرنل از PsSetCreateProcessNotifyRoutine استفاده می کنیم و پروسس ها رو مانیتور می کردیم

این رو لان دیدم خوشم امد

http://msforums.ph/forums/t/50817.aspx

alonemm
دوشنبه 12 اردیبهشت 1390, 16:21 عصر
باسلام:
در لینک زیر آموزش ساخت وب سرویس ها و نحوه بکار گیری در برنامه های تحت ویندوز رو براتون گزاشتم.
(میتونید ازش ایده بگیرید)
http://barnamenevis.org/showthread.php?274518-راه-اندازی-یک-وب-سرویس-و-استفاده-از-آن-در-برنامه-های-تحت-وب-و-برنامه-های-تحت-ویندوز&highlight=

S30S60
چهارشنبه 11 خرداد 1390, 16:40 عصر
رسم یک Rectangle با ماوس راحته اما یک مشکلی بعضی مواقع پیش می یاد(حد اقل برای من) که وقتی می خوایم یک مستطیل رو به طرف بالا رسم کنیم رسم نمیشه و حالا..

این یه خلاصه.



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication19
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

Point startPos;
Point currentPos;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
startPos = startPos = e.Location;
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
currentPos = e.Location;
this.Invalidate();
}
}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{

}

private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(new Pen(Color.Red), Math.Min(startPos.X, currentPos.X), Math.Min(startPos.Y, currentPos.Y), Math.Abs(startPos.X - currentPos.X), Math.Abs(startPos.Y - currentPos.Y));
}
}
}





اینم نمونه کد اصلی که من دیدم
http://stackoverflow.com/questions/4060446/how-to-draw-rectangle-on-mousedown-move-c

navidiran
چهارشنبه 22 تیر 1390, 10:58 صبح
با این کار کنترل تب خودکار پس از کامل شدن مقادیر پیش فرض تکست باکس یا مسک تکست باکس به کنترل بعدی میره

private void MaskTextBox_TextChanged(object sender, EventArgs e)
{
if (MaskTextBox.MaskCompleted) TextBox1.Focus();
}

//************************************************

private void TextBox1_TextChanged(object sender, EventArgs e)
{
if (TextBox1.TextLength == 2) TextBox2.Focus();
}

Esmail Solhkhah
شنبه 25 تیر 1390, 13:08 عصر
اگه Microsoft.VisualBasic رو به رفرنسهاتون Add کنید

برای تغییر نام فایل


Microsoft.VisualBasic.FileIO.FileSystem.RenameFile (file, newname);

و برای تغییر نام فولدر


Microsoft.VisualBasic.FileIO.FileSystem.RenameDire ctory(directry, newname);

quantomquery
پنج شنبه 30 تیر 1390, 14:33 عصر
یه روش خیلی راحت تر هم هست :

public bool isnumber(string s)
{
try
{
int i = int.Parse(s);
return true;
}
catch
{
return false;
}
}




از این روش هم راحت تر هست :

int a = 0;
bool isnum = int.TryParse(textBox1.Text, out a);

quantomquery
سه شنبه 18 مرداد 1390, 17:02 عصر
با این کار کنترل تب خودکار پس از کامل شدن مقادیر پیش فرض تکست باکس یا مسک تکست باکس به کنترل بعدی میره




private void MaskTextBox_TextChanged ( object sender, EventArgs e )
{
if ( MaskTextBox.MaskCompleted ) TextBox1.Focus( );
}

//************************************************

private void TextBox1_TextChanged ( object sender, EventArgs e )
{
if ( TextBox1.TextLength == 2 ) TextBox2.Focus( )
}





با اجازه دوست عزیز اینطور تصحیح بکنم :



private void MaskTextBox_TextChanged ( object sender, EventArgs e )
{
if ( MaskTextBox.MaskCompleted ) SendKeys.Send("{TAB}");
}

//************************************************

private void TextBox1_TextChanged ( object sender, EventArgs e )
{
if ( TextBox1.TextLength == 2 ) SendKeys.Send("{TAB}");
}

danial82
دوشنبه 24 مرداد 1390, 09:56 صبح
عملگر ؟؟ برای مشص کردن مقدار پیشفرض یک متغیر در صورت null بودن

// y = x, unless x is null, in which case y = -1.
int y = x ?? -1;


MSDN (http://msdn.microsoft.com/en-us/library/ms173224.aspx)

BEHZADnr
پنج شنبه 27 مرداد 1390, 19:05 عصر
با سلام خدمت تمام دوستان برنامه نویس

نحوه باز کردن یک برنامه و مطلع شدن از باز یا بسته بودن آن توسط Process
برای انجام این کار ابتدا استفاده از Using زیر
using System.Diagnostics;
و سپس قرار دادن کد زیر در هر جایی که دوست دارید
Process p = new Process();
ProcessStartInfo pI = new ProcessStartInfo();
pI.FileName = Environment.SystemDirectory + @"\notepad.exe";
pI.UseShellExecute = false;
pI.CreateNoWindow = true;
p.StartInfo = pI;
p.Start();

//برای مطلع شدن از باز بودن برنامه و نمایش نوشته دلخواه در لیبل
p.WaitForInputIdle();
label1.Text = "Open";


//برای مطلع شدن از خروج برنامه و نمایش نوشته دلخواه در لیبل
p.WaitForExit();
/*برای بسته شدن برنامه در زمان دلخواه از کد زیر به جای کد بالا استفاده کنید
p.WaitForExit(Input milisecond);
p.Kill();*/
label1.Text = "Close";
با استفاده از کد زیر شما می توانید هر برنامه دیگری را به جای NotePad اجرا کنید
pI.FileName = "آدرس برنامه";

نمونه برنامه
74011

آرزو میکنم که همیشه موفق باشین

epsi1on
دوشنبه 04 مهر 1390, 23:19 عصر
عنوان دقیقترِ پست: استفاده از کی-ورد await بجای جنگولک بازیهایِ من-درآوردیِ معمول...!

فرض کنید بعنوان یک مثال خیلی عمومی میخوایم مقدار زیادی اطلاعات از دیتابیس بگیریم (یا بطور کلی کاری بکنیم که کمی وقتگیر هست و Thread جاری رو چند لحظه ای مشغول میکنه) و نمیخوایم هم که این اتفاق بیوفته چون مثلا فرمی که الان کاربر داره باهاش کارمیکنه قفل میشه و یجورایی احساس خوشآیندی به کاربر نمیده!
برای حل این مشکل اصولا هرکس میتونه برای خودش راه حلی داشته باشه و همه راه حلها هم درست کار کنن. ولی استفاده از کی-ورد await میتونه از خیلی از اینها راحتتر باشه:
(تو این کد فرض کنید متد GetData که یه DataTable برمیگردونه، مدت زمان چند ثانیه وقت میگیره و مشکلمون اون هست و نمیخوایم مثلا فرممون اصطلاحا قفل بشه).


// Create new task
Task<DataTable> dataTask = new Task<DataTable>(GetData);

//this will actually "pause" the code execution until the task completes. It doesn't lock the thread, but rather waits for the result, similar to an async callback
DataTable table = await dataTask;

listBoxControl.DataContext = table;


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


//create and run a new task
Task<DataTable> dataTask = new Task<DataTable>(GetData);

//run some other code immediately after this task is started and running
ShowLoaderControl();
StartStoryboard();

//this will actually "pause" the code execution until the task completes. It doesn't lock the thread, but rather waits for the result, similar to an async callback
DataTable table = await dataTask;

//Now we can perform operations on the Task result, as if we're executing code after the async operation completed
listBoxControl.DataContext = table;
StopStoryboard();
HideLoaderControl();



منبع کد: http://stackoverflow.com/questions/4057359/new-c-await-feature

danial82
یک شنبه 15 آبان 1390, 12:32 عصر
پیدا کردن پورت COM دستگاهی که با چیپ ftdi به کامپیوتر وصل شده

UInt32 count = 0;
FTDI.FT_STATUS status = ftdi.GetNumberOfDevices(ref count);
if (status != FTDI.FT_STATUS.FT_OK)
{
log.Warn("Unable to access FTDI");
return ports;
}
FTDI.FT_DEVICE_INFO_NODE[] list = new FTDI.FT_DEVICE_INFO_NODE[count];
status = ftdi.GetDeviceList(list);
if (status != FTDI.FT_STATUS.FT_OK)
{
log.Warn("Unable to access FTDI");
return ports;
}
foreach (FTDI.FT_DEVICE_INFO_NODE node in list)
{
if ((status = ftdi.OpenByLocation(node.LocId)) == FTDI.FT_STATUS.FT_OK)
{
try
{
string comport;
ftdi.GetCOMPort(out comport);
ports.Add(new Port(comport, node.Description, node.SerialNumber));
}
finally
{
ftdi.Close();
}
}
}


منبع (http://stackoverflow.com/questions/2279646/finding-usb-serial-ports-from-a-net-application-under-windows-7)

mehdikhazaei
دوشنبه 03 بهمن 1390, 00:25 صبح
توابع Params در # C
یک تابع می تواند به تعداد نامحدود پارامتر دریافت کند برای اینکار از دستور Params در تعریف پارامترها استفاده می شود به مثال زیر توجه کنید :

public static long Sum(params int[] numbers)
{
long Result = 0;
foreach (int number in numbers)
{
Result += number;
}
return Result;
}

mehdikhazaei
دوشنبه 03 بهمن 1390, 00:29 صبح
آموزش نحوه Hidden (مخفی) کردن فایل در سی شارپ:

مبحث فایلها یک از جذابترین موضوعات در سی شارپ است.در این پست قصد دارم نحوه مخفی کردن و نمایش فایل مخفی را به زبان سی شارپ توضیح دهم.البته کد بسیار ساده ای دارد.

خوب, چون از فایل میخواهیم استفاده کنیم ابتدا فضای نام System.IO را به برنامه اضافه میکنیم.یک شی از کلاس FileInfo درست کرده و به آن مسیر فایلی را که میخواهیم مخفی کنیم به آن میدهیم

مبحث فایلها یک از جذابترین موضوعات در سی شارپ است.در این پست قصد دارم نحوه مخفی کردن و نمایش فایل مخفی را به زبان سی شارپ توضیح دهم.البته کد بسیار ساده ای دارد.

خوب, چون از فایل میخواهیم استفاده کنیم ابتدا فضای نام System.IO را به برنامه اضافه میکنیم.یک شی از کلاس FileInfo درست کرده و به آن مسیر فایلی را که میخواهیم مخفی کنیم به آن میدهیم



مبحث فایلها یک از جذابترین موضوعات در سی شارپ است.در این پست قصد دارم نحوه مخفی کردن و نمایش فایل مخفی را به زبان سی شارپ توضیح دهم.البته کد بسیار ساده ای دارد.

خوب, چون از فایل میخواهیم استفاده کنیم ابتدا فضای نام System.IO را به برنامه اضافه میکنیم.یک شی از کلاس FileInfo درست کرده و به آن مسیر فایلی را که میخواهیم مخفی کنیم به آن میدهیم مانند کد زیر:
FileInfo file;
file = new FileInfo("مسیر فایل");

برای مخفی کردن فایل از کد زیر استفاده میکنیم:

file.Attributes = FileAttributes.Hidden;



برای آنکه فایل مخفی شده ظاهر شود و از حالت Hidden بیرون بیاید از کد زیر استفاده میکنیم:



file.Attributes = ~FileAttributes.Hidden;

Salar Ashgi
یک شنبه 09 بهمن 1390, 22:14 عصر
ایجاد رمزهای تصادفی توسط فضای نام System.Security.Cryptography

public static string CreateRandomEncryptedPassword(int PasswordLen)
{
String allowedChars =
"abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ 0123456789";
Byte[] randomBytes = new Byte[PasswordLen];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(randomBytes);
char[] chars = new char[PasswordLen];
int allowedCharCount = allowedChars.Length;
for (int i = 0; i < PasswordLen; i++)
{
chars[i] = allowedChars[(int)randomBytes[i] % allowedCharCount];
}
return new string(chars);
}

danial82
جمعه 28 بهمن 1390, 05:45 صبح
برای تبدیل یک رشته به کلاس مربوطه از تابع GetType استفاده میکنیم

Type.GetType("Customer");


و اگر داخل کلاس اصلی کلاس دیگه باشد که به آن نیاز داشته باشیم از + استفاده میکنین

Type.GetType("Customer+Category");

samadblaj
جمعه 28 بهمن 1390, 09:35 صبح
سلام به همگی.
منم یه تیکه کد از یکی از پروژه های خودم رو گذاشتم (البته به صورت ساده تر) که برای زیبا شدن فرم به رابط کاربر کمکتون خواهد کرد.

کار کد : در صورتی که تعداد کارکتر های وارد شده ی textBox1 کمتر مساوی 3 عدد بود رنگ تکست به صورت سبز و ProgressBar سه پله افزایش پیدا کنه

همونطر که از کد پیداست نیاز به یک textBox1 و یک progressBar1 داریم :


string strt;
strt = textBox1.Text;
progressBar1.Value = Int32.Parse(strt.Length.ToString());
if (progressBar1.Value <= 3)
{
textBox1.BackColor = Color.Salmon;
}
else if (progressBar1.Value >= 3 && progressBar1 .Value <=6)
{
textBox1.BackColor = Color.Gold;
}
else if (progressBar1.Value >= 6)
{
textBox1.BackColor = Color.PaleGreen;
}

gwbasic
سه شنبه 23 اسفند 1390, 08:12 صبح
کسانیکه کمی تجربه کاری در محیط Visual Studio دارند حتما با پنجره Immediate Window آشنایی دارند. از طریق این پنجره می توان هنگام دیباگ کد نوشت مثلا مقدار متغییری رو تغییر داد و .... اما کار با این پنجره فقط به زمان دیباگ کردن محدود نمی شود و شما می تونید هنگام کد نویسی مثلا برای چک کردن صحت عملکرد یک متد از آن استفاده کنید آقای مجتبی بنایی در سایت خودشون در این پست (http://www.banaie.ir/%D8%B1%D9%88%D8%B2%D8%A7%D9%86%D9%87/%D8%AA%D8%AE%D8%B5%D8%B5%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1/%D8%A7%D8%B4%DA%A9%D8%A7%D9%84%D8%B2%D8%AF%D8%A7%D B%8C%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%A7%D8%B3%D8%AA%D9%88%D8%AF%DB%8C%D9%88-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%BE%D9%86%D8%AC%D8%B1%D9%87-%D9%81%D9%88%D8%B1%DB%8C-Immediate-Window.html) به این مطلب اشاره کردن
نقل از سایت ایشون:

یکی از امکانات جالب و البته قدیمی ویژوال استودیو در دیباگ کردن یا اشکالزدایی برنامه ها، پنجره فوری یا Immediate Window است که بازدن کلید Ctrl+Alt+I فعال می شود (یا از منوی دیباگ - زیر منوی ویندو). از این پنجره می توان در موارد زیر استفاده کرد :
اجرای محاسبات و دستورات و مشاهده فوری نتایج
فرض کنید می خواهید یک عبارت یا دستور را بنویسید و بدون اجرای برنامه نتیجه آنرا ببینید. مثلاً می خواهید یک فرمول ریاضی را بنویسید و صحت آنرا بررسی کنید و یا مثلاً ببینید تابع Random.Next(2,9) اعداد دوطرف بازه را هم تولید می کند یا نه ؟ کافیست در پنجره فوری متغیری از نوع Random تعریف کنید و تابع را روی آن متغیر صدا بزنید :(رنگ آبی مقادیریست که شما وارد می کنید)


Random R = new Random();
{System.Random}
R.Next(2,4);
2
R.Next(2,4);
2

اجرا و تست توابع
تابعی را نوشته اید و می خواهید آنرا سریعاً تست کنید. نمی خواهید که برنامه را از اول کامپایل کنید و درون برنامه اصلی آنرا فراخوانی و امتحان کنید . در این حالت هم بهترین راه تست تابع، استفاده از پنجره فوری است . فرض کنید تابعی به نام Test با یک ورودی رشته ای در کلاس Form1 تعریف کرده اید . می خواهید آنرا
صدا بزنید . کافیست در پنجره فوری این عبارات را تایپ کنید : (علامت سوال برای فراخوانی تابع و چاپ نتیجه)

Form1 F = new Form1();
{GIS1.Form1, Text: Form1}
base {System.Windows.Forms.Form}: {GIS1.Form1, Text: Form1}
components: null
?F.Test("ali");
"ALI"


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

saeed-kh
سه شنبه 26 اردیبهشت 1391, 20:48 عصر
پست های زیادی این مشکل را مطرح کردند.آخرشم تو این سایت به جواب نرسیدم.
لازم دیدم نتیجه رو اینجا برای دوستانم بزارم.

concurrency violation the updatecommand affected 0 of the expected 1 records


به قسمت TableAdapter در Dataset بروید.
دستورات مربوط به Update , Delete را اصلاح کنید. به این صورت که در قسمت Where فقط شرط مربوط به کلید را باقی گذاشته و بقیه شروط را حذف کنید.




Syed Sami Naushahi (http://social.msdn.microsoft.com/profile/syed%20sami%20naushahi/?ws=usercard-mini)
1. Open the DataSet in the designer.
2. Click on the adapter portion of the relevant table. For example in my case I clicked on DoctorTableAdopter.
3. The properties window will show the UpdateCommand and DeleteCommand for this adopter.
4. Expand Update and Delete commands by clicking the + sign on their left. This would show the CommandText property for these commands.
5. Click on the value entered against CommandText. It will show you the SQL statement for that command. Edit its WHERE clause and remove all other columns except the columns included in your primary key. For example in my case a rather lengthy WHERE clause (which was trying to compare more than a dozen columns) was modified to WHERE (Doctor_ID = @Original_Doctor_ID).

منبع:MSDN.com (http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/bfdb40a8-0e29-4897-8251-6368abe24516/)

mehdikhazaei
پنج شنبه 22 تیر 1391, 22:23 عصر
private void بررسیاتصالToolStripMenuItem_Click(object sender, EventArgs e)
{
string ConString = @"Data Source=studio;Initial Catalog=Uni_shomal;Integrated Security=True";

SqlConnection conn = new SqlConnection(ConString);
try
{
conn.Open();
MessageBox.Show("اتصال به پایگاه داده با موفقیت انجام شده است ", ">>>> بررسی اتصال <<<<");
}
catch (SqlException s)
{
MessageBox.Show(" اتصال به پایگاه داده انجام نشده است ", ">>>> خطای اتصال <<<<" + s);
}
finally
{
conn.Close();
}
}


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

سجاد ش
یک شنبه 25 تیر 1391, 10:42 صبح
Process.Start("control.exe", "Mouse");
باز کردن کنترل پنل و باز کردن صفخه موس پروپرتی

سجاد ش
یک شنبه 25 تیر 1391, 10:57 صبح
دسترسی به بعضی قسمت ها ویندوز با shell32

using Shell32;


اضافه کردن به رفرنس از طریق c:\win....\system32\shell32

private void Form1_Load(object sender, EventArgs e)
{
listBox2.Items.Add("access.cpl");
listBox2.Items.Add("appwiz.cpl");
listBox2.Items.Add("btcpl.cpl");
listBox2.Items.Add("desk.cpl");
listBox2.Items.Add("directx.cpl");
listBox2.Items.Add("hdwwiz.cpl");
listBox2.Items.Add("inetcpl.cpl");
listBox2.Items.Add("intl.cpl");
listBox2.Items.Add("irprops.cpl");
}




private void button1_Click(object sender, EventArgs e)
{
objshell.ControlPanelItem(listBox2.SelectedItem.To String());
}

mehdikhazaei
چهارشنبه 04 مرداد 1391, 04:59 صبح
To get started, open an existing C# Windows form (or create a new one).
Open the Visual Studio Toolbox.
Drag a NotifyIcon control onto the form. The control will named notifyIcon1 by default and placed below the form because it has no visual representation on the form itself.
Set the NotifyIcon control's Text property to the name you want to appear when the user pauses the mouse over the application's icon. For example, this value could be "KillerApp 1.0".
Set the control's Icon property to the icon that you want to appear in the System Tray.

private void Form1_Resize(object sender, System.EventArgs e)
{
if (FormWindowState.Minimized == WindowState)
Hide();
}

Add an event handler for the NotifyIcon.DoubleClick event and code it as follows so that the application will be restored when the icon is double-clicked.
private void notifyIcon1_DoubleClick(object sender,
System.EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
}

At this point, your application will fuction perfectly in terms of an icon appearing in the System Tray when the application is run, the application not appearing on the task bar when minimized and the application restoring itself when the Tray icon is double-clicked.

From the Visual Studio Toolbox, drag a ContextMenu control onto the form.
Right-click the ContextMenu control and select the Edit Menu.option.
Type in the options that you want to appear in your context menu. For example, you can add options such as Restore and Close Application.
As with any menu, double-click the menu item to create and code each item's handler. As an example, you could copy the code from the form's DoubleClick handler into the context menu's Restore handler and for the Close Application menu item; simply call the form's Close method.
Finally, set the NotifyIcon control's ContextMenu property to the new context menu you just created by selecting the menu from the drop-down list.

Refrence=www.codeguru.com

mehdikhazaei
یک شنبه 19 شهریور 1391, 19:20 عصر
کاربرد: ذخیره کردن دستورات Select , Insert , Update , Delete
ابتدا باید در Management studio پایگاه داده مربوطه که برای آن جدول ساخته بودیم را انتخاب کنیم و
سپس در قسمت Programmability وارد پوشه شده و کلیک راست می کنیم و روی New Stored Procedure کلیک می کنیم
در صفحه باز شده همه کدها را پاک کرده و Stored Procedure خود را می نویسیم.
برای مثال برای ذخیره سه مقدار در جدول که در تکست باکس برنامه وارد شده ، استور پروسیژر زیر را می نویسیم:

CREATE procedure InsertGroup
@Sal integer,@Code integer,@Name char(20)
AS
INSERT INTO Acc_Group
(Sal_Mali,Code_G,Name_G)
VALUES (@Sal,@Code,@Name)
GO


در رویداد باتن ذخیره در ویژوال استدیو سی شارپ کد زیر را می نویسیم و با اجرای برنامه سی شارپ مقدار های وارد شده در تکست باکس ها در جدول پایگاه داده ما ذخیره می شوند و توسط دیتا گرید ویو می توانیم آنها را مشاهده کنیم.
private void btn_save_Click(object sender, EventArgs e)
{
SqlCommand cmd1 = new SqlCommand();
string text1 = "Data Source=studio;InitialCatalog=AccountDb;Integrated Security=True";
SqlConnection c1 = new SqlConnection(text1);
cmd1.Parameters.Add(new SqlParameter("@Code", txtb_Code_G.Text));
cmd1.Parameters.Add(new SqlParameter("@Sal", txtb_Sal_Mali.Text));
cmd1.Parameters.Add(new SqlParameter("@Name", txtb_Name_G .Text));
cmd1.CommandText = "InsertGroup";
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Connection = c1;
c1.Open();
cmd1.ExecuteNonQuery();
c1.Close();
}

BEHZADnr
پنج شنبه 23 شهریور 1391, 13:22 عصر
سلام دوستان برنامه نویس
ابتدا Namespace زیر رو به برنامه اضافه کنید
using System.Runtime.InteropServices;
سپس کد زیر رو به ابتدای برنامه اضافه کنید

public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd,int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
حالا کد زیر را در رویداد MouseDown هر شی که خواستید اضافه کنید
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
موفق باشین

Salar Ashgi
پنج شنبه 25 آبان 1391, 21:39 عصر
با سلام . امروز داشتم مقاله ای رو در مورد توابع هش (Hash Functions) می خوندم ؛ کدی رو دیدم به زبان ++C

بود ، دیدم بد نیست تو #C پیادش کنیم و ازش استفاده کنیم !

long jenkins_one_at_a_time_hash(string key)
{
long hash = 0, i = 0;
for (hash = i = 0; i < key.Length; ++i)
{
hash += key[(int)i];
hash += (hash << 10);
hash ^= (hash >> 6);
}
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
return Math.Abs(hash);
}


منبع : ویکی پدیا



به هر رویه خوش تعریف (http://fa.wikipedia.org/wiki/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85)[۱] (http://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9_%D8%AF%D8%B1%D9%87%D9%85% E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C#‎‎‎cite_not e-0) یا تابع ریاضی (http://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9_%28%D8%B1%DB%8C%D8%A7%D8% B6%DB%8C%29) که حجم زیادی از داده (احتمالاً حجم نامشخصی از داده) را به یک عدد طبیعی تبدیل کند یک تابع هش[۲] (http://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9_%D8%AF%D8%B1%D9%87%D9%85% E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C#‎‎‎cite_not e-1)(به انگلیسی (http://fa.wikipedia.org/wiki/%D8%B2%D8%A8%D8%A7%D9%86_%D8%A7%D9%86%DA%AF%D9%84% DB%8C%D8%B3%DB%8C): Hash function) یا تابع درهم‌سازی می‌گویند.

nunegandom
جمعه 26 آبان 1391, 19:51 عصر
ترجیحا از کلاسی که نوشتم استفاده کنید :)
توضیحات کاملی درش داده شده

متد زیر برای فرم لود هست

public void Add_To_Load()
{
Stream fontStream = this.GetType().Assembly.GetManifestResourceStream( myFontPath);

byte[] fontdata = new byte[fontStream.Length];
fontStream.Read(fontdata, 0, (int)fontStream.Length);
fontStream.Close();
unsafe
{
fixed (byte* pFontData = fontdata)
{
pfc.AddMemoryFont((System.IntPtr)pFontData, fontdata.Length);
}
}
}

متود پایین برای رویداد Paint هست

public void Add_To_Paint(PaintEventArgs e)
{
e.Graphics.PageUnit = GraphicsUnit.Point;
System.Drawing.Font fn;
foreach (FontFamily ff in pfc.Families)
{
if (ff.IsStyleAvailable(myFontStyle))
{
foreach (var item in myControlList)
{
fn = new Font(ff, myFontSize, myFontStyle);
item.Font = fn;
}
}
}
}

jalil_m
شنبه 27 آبان 1391, 01:26 صبح
توابع Params در # C
یک تابع می تواند به تعداد نامحدود پارامتر دریافت کند برای اینکار از دستور Params در تعریف پارامترها استفاده می شود به مثال زیر توجه کنید :

public static long Sum(params int[] numbers)
{
long Result = 0;
foreach (int number in numbers)
{
Result += number;
}
return Result;
}


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



public static void myFunction(params object[] numbers)
{
.
.
.
}

سجاد ش
یک شنبه 28 آبان 1391, 13:04 عصر
کیبورد مجازی ویندوز


osk.exe >> run

کد C#‎‎‎


using System.Diagnostics;

System.Diagnostics.Process.Start(@"c:\WINDOWS\system32\osk.exe");

Mohsen229266
یک شنبه 28 آبان 1391, 19:48 عصر
سلام به همگی

می شه بجای نوشتن

X=Y*(2^3)

معادلش


X=Y<<3;

بجای
if(_price == null)
return 0;

return _price;

معادلش
string result = (_price ?? 0)

بجای

For(int i=0 ; i<3 ; i++)
X=Y/2


معادلش



X = Y >> 3


این یکی خیلی پر کاربرده بجای



if ((x2 - x1) < 0) S1 = -1;
else S1 = 1;


معادلش


S1=(x2-x1)<0?-1:1;

سجاد ش
چهارشنبه 01 آذر 1391, 12:16 عصر
لود کردن محتویات سایت در یک ریچ باکس

using System.IO;
using System.Net;

//کد
try
{
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(txtURL.Text);
request.Timeout = 6000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader responseReader = new StreamReader(responseStream);
rtbWebPage.Text = responseReader.ReadToEnd();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


داخل txtURL هم آدرس سایت رو بدید تکست باکس

محتویات رو داخل rtbWebPage تحویل بگیرید . ریچ باکس

keyvan_s89
سه شنبه 05 دی 1391, 21:24 عصر
با استفاده از این api میتونید هر پنجره ای رو که خواستید قفل کنید.


[DllImport("user32.dll")]
private static extern int EnableWindow(int hwnd, int fEnable);

int i = this.Handle.ToInt32();

int u= EnableWindow(i, 1);


تو این مثال handel پنجره فعلی رو میگیره و قفل میکنه که میتو نید با این تابع handel سایر پنجره ها رو بدست بیارید و قفل کنید.



[DllImport("user32.dll")]
private static extern int FindWindow(string lpClassName, string lpWindowName);

int i = FindWindow(null, "Windows Task Manager");



مثلا الان هندل task manager رو گرفتیم و گذاشتیم تویه I که میتونیم از I در تابع قبلی استفاده کنیم و Task Manager رو قفل کنیم !!!

mehdikhazaei
دوشنبه 09 اردیبهشت 1392, 22:40 عصر
آموزش وراثت در سی شارپ

استفاده از چهار کلاس ( دو کلاس پایه و دو کلاس مشتق شده)

آموزش چند ریختی

آموزش نحوه استفاده از دیتاگرید ویو

دو مثال برای درک بیشتر مفهوم وراثت ( محاسبه محیط مربع و مستطیل ، محاسبه حقوق استاد حق التدریسی و استاد هیأت علمی )


http://s4.picofile.com/file/7744276020/inheritance_Part2.rar.html

:تشویق:

سجاد ش
دوشنبه 06 خرداد 1392, 13:48 عصر
با این کد شما می تونید داخل مکانی (آدرس کرسر تکست باکس ) که با موس در تکست باکس انتخاب کردید تایپ کنید


int add = textBox7.SelectionStart;
textBox7.Text =textBox7.Text .Insert ( textBox7.SelectionStart , "1");
// = textBox7.SelectionStart + 1;
textBox7.SelectionStart = add+1 ;


و با این کد اخرین کارکتر وارد شده رو حذف کنید

int add = textBox7.SelectionStart-1;
textBox7.Text = textBox7.Text.Remove (textBox7.SelectionStart-1,1);
textBox7.SelectionStart = add;