-
تست ارتباط با اينترنت از طريق پينگ كردن
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
-
بدست آوردن سطر جاري در ديتاگريدويو
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
-
بدست آوردن ميزان زمان روشن بودن كامپيوتر
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
-
ارسال و اجراي مستقيم كوئري در LINQ To SQL
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
-
تشخیص روشن یا خاموش بودن کلید های CapsLock,NumLock,ScrollLock به روشی بسیار بسیار ساده
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);
-
1 ضمیمه
نقل قول: 1001 نکته در سی شارپ
با سلام و خسته نباشید
من امروز یک فایل برای دانلود گذاشتم که چند امکان جدید C# 3.0 رو بیان می نماید.
نکته های بارز C# 3.0
-
فقط یک نمونه از یک فرم اجرا شود
گاهی میخواهیم فقط یک نمونه از یک فرم اجرا شود.
برای اینکار تابعی نوشتم که در هنگام باز کردن فرم نام فرممان را به تابع ارسال میکنیم، اگر فرم بسته باشد که آنرا باز میکند اما اگر باز باشد آنرا به اولین لایه ممکن انتقال میدهد.
تابع:
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();
}
-
نقل قول: نمونه برنامه های کوچک و مفيد در سي شارپ
تبدیل مبنا با استفاده از 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();
-
اجراي يك متود تنها با دانستن نام آن (بصورت رشته)
براي مثال در تيكه كد زير دو متود 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);
}
}
-
اینترفیس INotifyPropertyChanged برای ایجاد یک رویداد ژنریک جهت تشخیص پروپرتی تغییر یافته
اینترفیس مذکور دارای یک رویداد به نام 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 کردن این ایونت درپروپرتی ها دقت کنید
-
محاسبه توان بدون استفاده از حلقه های تکرار و بازگشت
کدی که از فرمول ریاضی زیر پیروی میکنه :
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());
}
-- ويرايش شده -- با تشكر از همكاري شما : جهت نظم بيشتر لطفا امضا را حذف و عنوان نكته را درج نماييد.
-
تکست باکسی که فقط عدد قبول میکند
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();
}
}
-
نقل قول: 1001 نکته در سی شارپ
اضافه کردن شماره سطر به دیتا گرید ویو
در اونت 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);
}
-
نشان دادن کامل تاریخ و زمان سیستم با متود To String
DateTime mytime = newDateTime();
string time;
mytime = DateTime.Now;
time = mytime.ToString("F");
MessageBox.Show(time);
موفق و پیروز باشید !!!!
-
تولید رشته های تصادفی بصورت کاملا دستی
سلام دوستان ، این برنامه که نوشتم ، رشته های تصادفی بصورت کاملا دستی ، تولید
میکنه با هر طولی و بدون استفاده از امکانات سی شارپ !!!!
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;
}
موفق و پیروز باشید !!!
-
نقل قول: 1001 نکته در سی شارپ
انتخاب و فعال شدن یک سطر در 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;
}
}
-
1 ضمیمه
نقل قول: 1001 نکته در سی شارپ
خیلی وقتا نیاز داریم تو فرمهایی که به نحوی از دیتا گرید استفاده کردن به کاربر اجازه بدیم بتونه اونا رو چاپ کنه !
فایل ضمیمه حاوی یه کلاس هست که به عنوان سازنده دیتا گرید رو میگیره و میتونه با دومتد یا چاپ کنه یا پیش نمایش رو نشون بده
در ضمن امکانات دیگه ای هم مثل نوشتن متن رو هدر گزارش و .. داره که اونا رو هم تو فایل ضمیمه قرار دادم. تو فایل Usage.txt
-
نقل قول: 1001 نکته در سی شارپ
پاک کردن هم زمان تمام TextBox ها :
بعضی وقتا تعداد TextBox ها توی فرمتون خیلی زیاده و سخته که هر بار تمام اونها رو پاک کنید پس از روش زیر استفاده کنید تا تمام TextBox ها را یکجا Clear کنید.
public void ClearTextBoxs()
{
foreach (Control txt in this.Controls)
{
if (txt.GetType().Name == "TextBox")
txt.Text = "";
}
}
-
نقل قول: 1001 نکته در سی شارپ
شاید شما هم وقتی در .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
-
بدست آوردن زبان های نصب شده در سیستم:
string s;
foreach (InputLanguage Language in InputLanguage.InstalledInputLanguages)
{
s = Language.LayoutName;
listBox1.Items.Add(s);
}
http://www.projeha.blogfa.com/
-
1 ضمیمه
فشرده سازی پیام ها هنگام استفاده WebService ها
-
نقل قول: 1001 نکته در سی شارپ
عمل چک باکس مثل رادیو باتون
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;
}
}
-
چينش تصادفي اعضاي يك ليست يا آرايه به كمك LINQ
با فرض داشتن ليستي از اعداد مانند :
private List<int> numbers = new List<int> { 2, 12, 4, 6, 11 };
ميتوانيم بنويسيم :
numbers = numbers.OrderBy(i => System.Guid.NewGuid()).ToList<int>();
-
ايجادمحدوديت كاراكتري با حداقل كد
براي ايجادمحدوديت درنوع پذيرش كاراكتر دريك 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;
}
}
-
نقل قول: ايجادمحدوديت كاراكتري با حداقل كد
نقل قول:
نوشته شده توسط
nathan
براي ايجادمحدوديت درنوع پذيرش كاراكتر دريك 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();
-
افزدون قطعه کدی به ToolBox
سلام
VS این امکان رو به شما میده که کدی که از اون زیاد استفاده می کنید رو به ToolBox اضافه کنید تا در مواقع بعدی با یک دابل کلیک ساده بتونید ازش استفاده کنید .
برای اینکار کافیه در پنجره کدنویسی ، قطعه کد مورد نظرتون رو انتخاب کرده و اون رو به Toolbox درگ کنید . همچنین با Right Click روی گزینه اضافه شده و انتخاب Rename Item می تونید نام قطعه کد مورد نظر رو تغییر بدید .
-
نقل قول: 1001 نکته در سی شارپ
مثالی ساده از 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);
موفق و پیروز باشید !!!!
-
4 ضمیمه
نقل قول: منابع، مراجع و مقالات مفید تالار
سلام
یه سری pdf درمورد :
1- در مورد ساخت فرم های شفاف
2- استفاده از فایلهای فلش در #C
3- گرفتن Backup و Restore کردن دیتابیس
4- پخش فایل های صوتی تصویری به وسیله Windows Media Player
-
معرفي ابزارهايي براي مستندسازي كد و ديتابيس
بهتر است هميشه پروژههاي خود را مستند سازي كنيم تا زماني كه به دلايل مختلف نياز به تغيير يا استفاده مجدد آنها باشد بتوانيم به راحتي كدها و قسمتهاي مختلفي كه نوشته ايم را سريعا به ياد آوريم يا مرور كنيم. براي اينكار ابزارهاي بسيار زيادي وجود دارد اما برخي از آنها كاربردي و مفيدند. اين جدول كه در سايت WikiPedia وجود دارد مقايسه جالبي را بين اين برنامه ها و امكاناتي كه ارائه ميكنند نشان داده است.
Comparison of documentation generators
For Code
Doxygen
يكي از بهترين برنامه براي مستند سازي كد كه امكانات زيادي دارد، به فرمتهاي مختلفي خروجي ميدهد و بسياري از زبانها و سيستمعامل هاي مختلف را نيز پشتيباني ميكند.
فرمتهاي خروجي HTML - CHM - RTF - PDF - LaTeX - PostScript - man pages - XML
مستند سازي كد را به صورتي ساده تر انجام ميدهد. و ظاهري زيبا دارد.
فرمتهاي خروجي: HTML - CHM - RTF - PDF - XML
قابليت اضافه شدن در محيط VisualSyudio را نيز دارا ميباشد و ميتوانيد در همان محيط به توليد مستندات بپردازيد
فرمتهاي خروجي: HTML - CHM
با پيروري از قواعدي ساده در Commentها ميتوانيد تغييرات مستقيمي در مستندات داشته باشيد مثلا كدام كلمات عنوان يا زير عنوان باشد يا كدام توپر(Bold) چه قسمتهايي بالت دار باشند
فرمتهاي خروجي: HTML - CHM
مستنداتي مشابه MSDN توليد ميكند. و آنها را در MSDN سيستم اضافه ميكند.
فرمتهاي خروجي: HTML - CHM - RTF - XML
For DataBase
اين برنامه ها با اتصال به سرور و ديتابيس مورد نظر كليه اطلاعات آنرا (به جز دادههاي جداول) اعم از جداول و مشخصات فيلدها، توابع، كاربران، قوانين تعيين شده و ... را مستند سازي كرده و به صورت مرتب و مجتمع تحويل ميدهد.
DB Scribe
اين برنامه اطلاعات مربوط به ديتابيس را مستندسازي ميكند.
فرمتهاي خروجي: HTML - CHM - RTF
BI Documenter
اين برنامه اطلاعات مربوط به ديتابيس را مستندسازي ميكند. دياگرامهاي آنرا رسم ميكند. مستندات آن ظاهر زيباتري دارند
فرمتهاي خروجي: HTML - CHM
-
1 ضمیمه
ايجاد فرمهاي غير مستطيلي
يك روش استاندارد براي ايجاد فرمهاي غير مستطيلي (در اين مثال مثلثي شكل).
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;
}
-
1 ضمیمه
نقل قول: 1001 نکته در سی شارپ
اگه از محیط سفید رنگ IDE خسته شدید
این دوتا فایل رو استفاده کنید
جهت استفاده تو IDE
Tools-> Import and Export Settings
-
نقل قول: 1001 نکته در سی شارپ
نحوه ساخت setup برای پروژه با نصب SqlServer و دات نت
https://barnamenevis.org/showthread.php?t=139529
-
کپی آیتم های یک کامبو باکس به دیگری بدون استفاده از حلقه و در یک خط
comboBox2.Items.AddRange(comboBox1.Items.Cast<Obje ct>().ToArray());
ممکنه روشهای سرراست تری هم وجود داشته باشه
-
نقل قول: 1001 نکته در سی شارپ
استفاده ازديكشنري:
Dictionary<datatype1, datatype2> name = newDictionary<datatype1, datatype2>();
datatype1 : Key
datatype2 :value
بااستفاده ازديكشنري مي توانيد آرايه اي ازمطالب به هم وابسته راكه به هرركورديك كليدتخصيص مي دهيددريك مجموعه جمع كنيد.
-
1 ضمیمه
نقل قول: منابع، مراجع و مقالات مفید تالار
-
محاسبه ي فاصله بين دو زمان مشخص
انجام اين كار خيلي ساده هست. از كلاس 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 قبلاً اين كلاس رو معرفي كرده بودند. از sinpin عزيز هم ممنونم.)
-
Register A Global HotKey
با استفاده از اين روش بسيار ساده و عالي، بدون هيچ زحمت و توابع پيچيده و 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 درش بياريم، يا توي يك كلاس بنويسيم و .....
اين هم تاپيك سوالم كه در نهايت به اين روش آگاهي يافتم:
https://barnamenevis.org/showth...d=1#post668015
اميدوارم كه مطلب مفيدي بوده باشه براتون.
موفق باشيد.
-
کپی آیتم های یک کامبو باکس به دیگری
روش دیگر برای کپی آیتم های یک کامبو باکس به دیگری در موقعی که بخواهیم از کلاس استفاده کنیم
BindingSource bs = new BindingSource(comboBox1, "Items");
comboBox2.DataSource = bs;
-
1 ضمیمه
نقل قول: منابع، مراجع و مقالات مفید تالار
-
Custom ToolTip در WPF
-
پیدا کردن معکوس یک رشته بصورت بازگشتی
سلام ، دوستان تابعی که در زیر نوشتم معکوس (مقلوب) یک رشته را می یابد ،
کد مورد نظر :
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);
}
امیدوارم مفید بوده باشد !!!
-
غیر فعال کردن یک رویداد در زمان اجرا
به عنوان مثال میخواهیم بدون اینکه متد text changed تحریک شود مقدار text box را عوض کنیم و بعد متد را اجرا کنیم
//remove eventhandler
TextBox1.textchanged-=new EventHandler(TextBox1_textchanged);
TextBox1.text="value";
//add event handler
TextBox1.textchanged+=new EventHandler(TextBox1_textchanged);
-
چطور میشه کاری کرد که نشه توی TextBox فارسی نوشت و کلید های سوئیچی alt+shift هم بی تاثیر باشه
برای اینکه کلید های سوئیچی هیچ تاثیری نداشته باشن خصوصیت key preview فرم را با Trueمقدار دهی میکنیم و کد زیر رو برای خصوصیت key down فرم می نویسیم
if(e.Alt && e.shift)
}
InputLanguage.currentInputLanguage=InputLanguage.F ormculture(system.Globalization.cultureInfo.Getcul tureInfo("fa"));
-
چند نکته و نمونه برنامه
-
Covert Picture to Icon
تبدیل عکس به آیکن.....
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();
-
تغییر زبان فرم های ویندوزی از فارسی به انگلیسی و از انگلیسی به فارسی
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);
}
-
چک کردن ورودی کاربر برای مقادیر عددی
یکی از روش های گرفتن مقادیر عددی برای ورودی استفاده از 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()
-
نمایش قرمز رنگ عبارت مورد جستجو در RichTextBox
توضیح: رنگ رو میتونید خودتون عوض کنید.
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;
}
-
تبديل اعداد به رشته
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;
}
}
-
نقل قول: 1001 نکته در سی شارپ
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);
}