-
نقل قول: 1001 نکته در سی شارپ
ایجاد رمزهای تصادفی توسط فضای نام System.Security.Cryptography
public static string CreateRandomEncryptedPassword(int PasswordLen)
{
String allowedChars =
"abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXY Z0123456789";
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);
}
-
نقل قول: Concatenating Wave ، اتصال فایلهای Wave
برای تبدیل یک رشته به کلاس مربوطه از تابع GetType استفاده میکنیم
Type.GetType("Customer");
و اگر داخل کلاس اصلی کلاس دیگه باشد که به آن نیاز داشته باشیم از + استفاده میکنین
Type.GetType("Customer+Category");
-
نقل قول: 1001 نکته در سی شارپ
سلام به همگی.
منم یه تیکه کد از یکی از پروژه های خودم رو گذاشتم (البته به صورت ساده تر) که برای زیبا شدن فرم به رابط کاربر کمکتون خواهد کرد.
کار کد : در صورتی که تعداد کارکتر های وارد شده ی 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;
}
-
نقل قول: 1001 نکته در سی شارپ
کسانیکه کمی تجربه کاری در محیط Visual Studio دارند حتما با پنجره Immediate Window آشنایی دارند. از طریق این پنجره می توان هنگام دیباگ کد نوشت مثلا مقدار متغییری رو تغییر داد و .... اما کار با این پنجره فقط به زمان دیباگ کردن محدود نمی شود و شما می تونید هنگام کد نویسی مثلا برای چک کردن صحت عملکرد یک متد از آن استفاده کنید آقای مجتبی بنایی در سایت خودشون در این پست به این مطلب اشاره کردن
نقل از سایت ایشون:
یکی از امکانات جالب و البته قدیمی ویژوال استودیو در دیباگ کردن یا اشکالزدایی برنامه ها، پنجره فوری یا 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"
تغییر مقادیر متغیرها در هنگام اشکالزدایی برنامه
خیلی از اوقات هنگام دیباگ کردن یک برنامه می خواهید مقدار یک متغیر را تغییر دهید مثلاً شمارنده حلقه را تغییر دهید تا به فلان مقدار برسد اینجا هم کافیست در پنجره فوری مقدار جدید را به متغیر نسبت دهید. در این حالت نیازی به تعریف متغیرنیست و تنها متغیر را برابر مقدار جدید می گذارید .
-
حل مشکل خطای Concurrency violation
پست های زیادی این مشکل را مطرح کردند.آخرشم تو این سایت به جواب نرسیدم.
لازم دیدم نتیجه رو اینجا برای دوستانم بزارم.
concurrency violation the updatecommand affected 0 of the expected 1 records
به قسمت TableAdapter در Dataset بروید.
دستورات مربوط به Update , Delete را اصلاح کنید. به این صورت که در قسمت Where فقط شرط مربوط به کلید را باقی گذاشته و بقیه شروط را حذف کنید.
نقل قول:
Syed Sami Naushahi
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).
-
اطمینان از برقراری اتصال به پایگاه داده
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();
}
}
بررسی اتصال به پایگاه داده و اگر اتصال برقرار نشده باشد نمایش ارورهای ممکن جهت رفع مشکل اتصال.
-
نقل قول: 1001 نکته در سی شارپ
Process.Start("control.exe", "Mouse");
باز کردن کنترل پنل و باز کردن صفخه موس پروپرتی
-
نقل قول: 1001 نکته در سی شارپ
دسترسی به بعضی قسمت ها ویندوز با 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());
}
-
Placing Your C# Application in the System Tray
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
-
نحوه استفاده از Stored Procedure در سی شارپ و SQL Server
کاربرد: ذخیره کردن دستورات 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();
}
-
نحوه جابجایی فرم با استفاده از API
سلام دوستان برنامه نویس
ابتدا 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);
}
موفق باشین
-
نقل قول: 1001 نکته در سی شارپ
با سلام . امروز داشتم مقاله ای رو در مورد توابع هش (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);
}
منبع : ویکی پدیا
نقل قول:
به هر
رویه خوش تعریف[۱] یا
تابع ریاضی که حجم زیادی از داده (احتمالاً حجم نامشخصی از داده) را به یک عدد طبیعی تبدیل کند یک
تابع هش[۲](به
انگلیسی: Hash function) یا
تابع درهمسازی میگویند.
-
1 ضمیمه
استفاده از فونت embed شده | custom font
ترجیحا از کلاسی که نوشتم استفاده کنید :)
توضیحات کاملی درش داده شده
متد زیر برای فرم لود هست
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;
}
}
}
}
-
نقل قول: کار کردن با کلاس TimeZoneInfo
نقل قول:
نوشته شده توسط
mehdikhazaei
توابع 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)
{
.
.
.
}
-
نقل قول: 1001 نکته در سی شارپ
کیبورد مجازی ویندوز
osk.exe >> run
کد C#
using System.Diagnostics;
System.Diagnostics.Process.Start(@"c:\WINDOWS\syst em32\osk.exe");
-
سلام به همگی
می شه بجای نوشتن
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;
-
نقل قول: 1001 نکته در سی شارپ
لود کردن محتویات سایت در یک ریچ باکس
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 تحویل بگیرید . ریچ باکس
-
نقل قول: 1001 نکته در سی شارپ
با استفاده از این 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 رو قفل کنیم !!!
-
نقل قول: قرار دادن شورتکات یک برنامه بر روی Desktop و Start Menu
آموزش وراثت در سی شارپ
استفاده از چهار کلاس ( دو کلاس پایه و دو کلاس مشتق شده)
آموزش چند ریختی
آموزش نحوه استفاده از دیتاگرید ویو
دو مثال برای درک بیشتر مفهوم وراثت ( محاسبه محیط مربع و مستطیل ، محاسبه حقوق استاد حق التدریسی و استاد هیأت علمی )
http://s4.picofile.com/file/77442760...Part2.rar.html
:تشویق:
-
مکان نما در تکست باکس
با این کد شما می تونید داخل مکانی (آدرس کرسر تکست باکس ) که با موس در تکست باکس انتخاب کردید تایپ کنید
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;
-
نقل قول: معرفی لینکهای مفید در ارتباط با API های ویندوز
-
نقل قول: معرفی سایتهایی جهت دریافت آیکن رایگان
انتقال محتویات DatagridView به یک Datatable:
DataTable dt = new DataTable();
private void getDgvToDt()
{
//کپی دیتا گرید در دیتا تیبل وقتی دیتا سرس وجود داشته باشد
//var dt2 = ((DataTable)dataGridView1.DataSource).Copy();
//
//کپی دیتا گرید در دیتا تیبل وقتی دیتا سرس وجود داشته نباشد
//table.Columns.AddRange(dataGridView1.Columns.Cast< DataGridViewColumn>().Select(c => new DataColumn(c.Name)).ToArray());
dt.Columns.Add("StartDate");
dt.Columns.Add("EndDate");
dt.Columns.Add("Name");
DataRow row;
foreach (DataGridViewRow dgvr in dataGridView1.Rows)
//dt.Rows.Add(row.Cells.Cast<DataGridViewCell>().Sel ect(cell => cell.Value).ToArray());
{
row = dt.NewRow();
row["StartDate"] = dgvr.Cells["ClmnStartDate"].Value.ToString();
row["EndDate"] = dgvr.Cells["ClmnEndDate"].Value.ToString();
row["Name"] = dgvr.Cells["ClmnName"].Value.ToString();
dt.Rows.Add(row);
}
}
-
نقل قول: معرفی سایتهایی جهت دریافت آیکن رایگان
در مورد متد ها ونحوه فراخوانی.
private void BiggerWindow()
{
this.Height += 200;
this.Width += 200;
}
private void button1_Click(object sender, EventArgs e)
{
BiggerWindow();
}
private void ChangeSizeForm(int x, int y)
{
this.Width = x;
this.Height = y;
}
private void ChangeSizeForm(string x, string y)
{
this.Width = Convert.ToInt16(x);
this.Height = Convert.ToInt16(y);
}
private void button2_Click(object sender, EventArgs e)
{
ChangeSizeForm(textBox1.Text, textBox2.Text);
}
private int sum(int x, int y)
{
return (x + y);
}
private int sum(int x, int y, int z)
{
return (x + y + z);
}
private void button3_Click(object sender, EventArgs e)
{
int a;
a = sum(12, 45, 2);
MessageBox.Show(a.ToString());
}
int a = 10, b = 5;
private void ShowIt()
{
label1.Text = a.ToString();
label2.Text = b.ToString();
}
private void Double1(int x, int y)
{
x *= 2; y *= 2;
}
private void Double2(ref int x, ref int y)
{
x *= 2; y *= 2;
}
private void button4_Click(object sender, EventArgs e)
{
Double1(a, b);
}
private void button5_Click(object sender, EventArgs e)
{
Double2(ref a, ref b);
}
private void button6_Click(object sender, EventArgs e)
{
ShowIt();
}
-
نقل قول: 1001 نکته در سی شارپ
تبدیل عکس به آرایه ای از بایت ها و بالعکس
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat .Gif);
return ms.ToArray();
}
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
-
کد به حرکت در آوردن متن که دونه به دونه به متن اضافه میشه و وقتی کامل شد دوباره از اول شروع میشه.ارپ
کد به حرکت در آوردن متن که دونه به دونه به متن اضافه میشه و وقتی کامل شد دوباره از اول شروع میشه.
برای اینکه یک متن رو به حرکت در بیاورید اول باید یک Timer و Label یا Textbox روی برنامه قرار داده . و مقدار interval رو برای به حرکت در آوردن متن تعیین کنید. من 360 رو پیشنهاد میکنیم سرعت خوبی هستش ولی هر مقداری خواستید خودتان می توانید تعیین کنید و مقدار Enable= true قرار بدید.
private static int si = 0;
و در داخل رویداد این دستور رو وارد فرمایید.
private void TimSayeBan_Tick(object sender, EventArgs e)
{
try
{
string str = "نرم افزار حسابداری سایه بان";
if (LblSayeBan.Text.ToString().Length < str.Length)
{
LblSayeBan.Text = str.Substring(0, si) + "";
si += 1;
}
else
{
LblSayeBan.Text = "";
si = 0;
}
}
catch
{
}
}
و وقتی که این کد رو اضافه کردید اون موقع برنامه رو اجرا کنید و مبینید که متن داخل Label شروع به حرکت کردن میکند.
-
کد به حرکت در آوردن فرم به وسیله فرم و ابزار های که روی فرم قرار دارد.
کد به حرکت در آوردن فرم به وسیله فرم و ابزار های که روی فرم قرار دارد.
1- اول باید using انجام داد.using System.Runtime.InteropServices;
2- باید توابع API رو وارد کرد. //کد مربوط به جابه جایی برنامه
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();
3- بعد در رویداد ابزار مورد نظر که میخواهید فرم رو حرکت بدید یعنی در رویداد Mouse Down آن ابزار چی فرم یا ابزار دیگر هستش این کد را بنویسید. private void frmLoad_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
}
حالا وقتی شما روی ابزار خود موس را نگر میدارید و موس را تکان میدهید فرم شما تکان میخورد. بدون هیچ مشکل و خطای
-
کد جلوه دادن به دکمه که وقتی روی دکمه میریم بیاد جلو وقتی موس از روش ور داریم برگرد به حالت اول.
کد جلوه دادن به دکمه که وقتی روی دکمه میریم بیاد جلو وقتی موس از روش ور داریم برگرد به حالت اول.
برای اینکه به دکمه جلوه بدیم باید .
1- وارد کلاس program بشیم و این دستورات رو وارد کنیم. به این صورت
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace AppSoftwareHesabDarePoshak
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new frmLoad());
}
#region Just Style the Buttons
public static void MakebuttonStyle(Button button)
{
button.MouseEnter += new EventHandler(button_MouseEnter);
button.MouseLeave += new EventHandler(button_MouseLeave);
}
private static void button_MouseLeave(object sender, EventArgs e)
{
Button button = (Button)sender;
button.FlatStyle = FlatStyle.Standard;
button.Font = new System.Drawing.Font(button.Font.FontFamily, button.Font.Size);
button.ForeColor = System.Drawing.SystemColors.ControlText;
}
private static void button_MouseEnter(object sender, EventArgs e)
{
Button button = (Button)sender;
button.FlatStyle = FlatStyle.Flat;
button.Font = new System.Drawing.Font(button.Font.FontFamily, button.Font.Size, System.Drawing.FontStyle.Bold);
button.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
}
#endregion
}
}
2- حالا برای اینکه ببینیم دکمه ما وقتی موس روش میره میاد بالا یا نه وارد یکی از فرم ها میشم و در بالا فرم قسمت Initialize Component(); دستور رو به این صورت میدهیم.
public FrmAddCompany()
{
InitializeComponent();
Program.MakebuttonStyle(this.BtnAdd);
Program.MakebuttonStyle(this.BtnExit);
Program.MakebuttonStyle(this.BtnMin);
Program.MakebuttonStyle(this.BtnOpenPic);
}
و وقتی برنامه رو اجرا میکنیم میبینیم که وقتی موس روی دکمه میرود میاد جلو وقتی از روی دکمه میرود بر میگرد به حالت اول.
هر دکمه که میخواهیم جلوه بدهیم در قسمت Initialize Component میدهیم.
-
کد در صورت نبودن زبان فارسی روی سیستم باعث پیغام به شخص شود که زبان فارسی در سیستم نصب نمی باشد.
کد در صورت نبودن زبان فارسی روی سیستم باعث پیغام به شخص شود که زبان فارسی در سیستم نصب نمی باشد.
برای اینکه به شخص پیغام دهیم که زبان فارسی روی سیستم شما نصب نیست در قسمت Initialize Component این دستور رو وارد میکنیم.
public FrmAddCompany()
{
InitializeComponent();
try
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.Cul tureInfo.CreateSpecificCulture("fa-IR"));
}
catch
{
PersianMessageBox.Show("برای استفاده از برنامه باید زبان فارسی را نصب کنید");
}
}
و زبان فارسی روی سیستم نصب بیشه دیگه این پیغام ظاهر نمی شود. و از این کد
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.Cul tureInfo.CreateSpecificCulture("fa-IR"));
رو اگه فقط در change text box داده شود طرف وقتی میخواهد تایپ کنید فقط می تواند فارسی تایپ کنی فقط و به زبان دیگر نمی تواند تایپ کنید ولی وقتی در قسمت Initialize Component تعریف کنید برنامه اول به صورت فارسی میاد و وقتی دکمه alt+shift رو بزنه می تواند به غیر از فارسی انگلیسی هم تایپ کند.
-
کد تغییر اندازه تصویر در تکس باک موقع وارد کردن تصویر در Picturebox
کد تغییر اندازه تصویر در تکس باک موقع وارد کردن تصویر در Picture box
برای اینکه اندازه تصویر را عوض کنید اول باید. این دستور ها رو خارج از رویداد تعریف کنید.
//کد برای تغییر اندازی تصویر
#region public Memebers
public Image picimage = Properties.Resources.whitebackgound;
#endregion
#region Propersties
private int _imgwidth
{
get { return 120; }
}
private int _imgHieght
{
get { return 140; }
}
#endregion
#region public Function
public Bitmap ResizeBitMap(Bitmap b, int nWidth, int nHeight)
{
Bitmap result = new Bitmap(nWidth, nHeight);
using (Graphics g = Graphics.FromImage((Image) result)) g.DrawImage(b, 0, 0, nWidth, nHeight);
return result;
}
#endregion
و وقتی که خارج از برنامه تعریف کردید در دکمه یا قسمتی که قسط باز کردن تصویر و دادن آن به Picturebox را دارید به این صورت دستور رو وارد فرمایید.
private void imageshow()
{
try
{
OpenFileDialog openFile = new OpenFileDialog();
openFile.Filter = "(*.JPG) تصاویر|*.jpg|" + "(*.GIF) تصاویر|*.Gif" + "(*.PNG) تصاویر|*.PNG" + "" + "(*.*) تمام تصاویر|*.*";
openFile.Title = "انتخاب تصویر";
openFile.ShowDialog();
float imgWidth = System.Drawing.Image.FromFile(openFile.FileName).P hysicalDimension.Width;
float imgHieght = System.Drawing.Image.FromFile(openFile.FileName).P hysicalDimension.Height;
picimage = System.Drawing.Image.FromFile(openFile.FileName);
if (imgWidth > _imgwidth || imgHieght > _imgHieght)
{
string strMessage = "تصویر انتخابی شما نباید بزرگتر از {1}*{0} پی کسل باشد" + "\n" +
"آیا تمایل به تغییر اندازه عکس دارید ؟";
if (
PersianMessageBox.Show(string.Format(strMessage, _imgwidth, _imgHieght), "پیام سیستم",
PersianMessageBox.Buttons.YesNo, PersianMessageBox.Icon.Warning) == DialogResult.Yes)
{
picimage = ResizeBitMap((Bitmap) picimage, _imgwidth, _imgHieght);
PicShowImage.Image = picimage;
}
else
{
picimage = Properties.Resources.whitebackgound;
PicShowImage.Image = picimage;
}
}
else
{
PicShowImage.Image = picimage;
}
}
catch
{
}
}
private void btnOpen_Click(object sender, EventArgs e)
{
imageshow();
}
اعلان شما میگوید چرا من در خارج دکمه دستور باز کردن تصویر و کوچک کردن تصویر رو انجام میدم و در دکمه فقط صدا میکنیم . دلیل این کار من این می باشد که من از contextMenuStrip1 هم استفاده میکنیم در پروژه اگه دستور باز کردن رو در جفت کپی پست کنیم در صورت داشتن اشغال باید هر جفت دستور رو بگردم که دادم که خطا از کجا بودی یا هی کپی پست کنیم ولی وقتی در خارج از رویداد میسازم دستور رو و در رویداد کلیک دکمه یا contextMenuStrip1 مورد نظر صدا میکنیم وقتی اشغالی پیش بیاد فقط دستور که در خارج از دکمه و contextMenuStrip1 قرار دادم و درست میکنیم و وقتی دکمه یا کلیک روی یکی از منو contextMenuStrip1 میشود دستور از همون خطی که صدا کردم صدا میشه تا با مشکل برخورد نکنیم. و همچنین دیگه هی کپی پست روی هم نمی خواهد.
فقط یک نکته می ماند. من در این دستور برای تغییر ساز از این دستور برای ساخت تصویر استفاده کردم.picimage و این دستور مربوط به ابزار تصویر می باشد.PicShowImage
-
کد در صورت خالی بودن تکس باکس و کادر تصویر پیغام دهید. به وسیله error Provider و همچنین Message box
کد در صورت خالی بودن تکس باکس و کادر تصویر پیغام دهید. به وسیله error Provider و همچنین Message box
برای اینکه کادر تصویر خالی رها نشود رنگ کادر متن عوض شود.
1- باید اول textbox رو انتخاب کرد. و در قسمت Properties از رویداد ها ، رویداد leave رفته و این دستور رو وارد فرمایید.
if (TxtAddNumber.Text.Trim() == "")
TxtAddNumber.BackColor = Color.Red;
else
{
TxtAddNumber.BackColor = Color.White;
}
2- حالا میخواهیم روی دکمه ذخیره کلیک کنیم و وقتی تکس باکس هنوز خالی بود اطلاعات ذخیره نشه و روی همون تکس باکس برود. برای این کار باید از return استفاده شود. این دستور
if (TxtAddNumber.Text.Trim() == "")
{
errorProvider1.SetError(TxtAddNumber, "لطفاً شماره ثبت را وارد فرمایید");
TxtAddNumber.Focus();
return;
}
3- حالا میخواهیم وقتی تکس باکس پور شود همون لحظه رنگ ضمینی تکس باکس سفید بیشه و علامت errorProvider1 برود این دستور رو وارد میکنیم. در قسمت text change
private void TxtAddNumber_TextChanged(object sender, EventArgs e)
{
errorProvider1.SetError(TxtAddNumber,string.Empty) ;
if (TxtAddNumber.Text.Trim() != "")
{
TxtAddNumber.BackColor = Color.White;
}
}
4- و حال میخواهیم وقتی عکس در داخل تکس باکس نبود پیغام خطا ظاهر شود از این دستور استفاده میکنیم.
if (PicShowImage.Image == null)
{
PersianMessageBox.Show("شما تصویری برای لوگو شرکت انتخاب نکردید؟", "تصویری رو انتخاب فرمایید",
PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.Error);
btnOpen.Focus();
return;
}
یک نکته ما وقتی میخواهیم عکسی رو در داخل دیتابیس ذخیره می کنیم و هیچ عکس و برای ذخیره نمیدهم و موقع اجرا برنامه دیتاگرید ویو که میخواهد اطلاعات رو نمایش دهد خطا میدهد یا روی دیتاگرید کلیک میکنید خطا میدهد این به این علت هستش که مقدار فیلد جدول دیتابیس رو var binary قرار دادید و مقداری در این فیلد باید قرار بگرید ولی شما مقداری قرار ندادید خطا میدهد.
-
نقل قول: یاد دهی کد های بدرد بخور و اصلی سی شارپ
افزودن برنامه به استارت آپ ویندوز
using Microsoft.Win32;
public static void AddToStartUpKey(string AppName, string AppPath)
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run",
true);
key.SetValue(AppName, AppPath);
}
public static void RemoveFromStartUpKey(string AppName)
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run",
true);
key.DeleteValue(AppName, false);
}
-
نقل قول: یاد دهی کد های بدرد بخور و اصلی سی شارپ
قرار دادن پروکسی برای ویندوز
using Microsoft.Win32;
public static void SetProxy(string Host, string Port)
{
RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microso ft\\Windows\\CurrentVersion\\Internet Settings", true);
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", Host + ":"+ Port);
}
public static void DeleteProxy(string Host, string Port)
{
RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microso ft\\Windows\\CurrentVersion\\Internet Settings", true);
registry.SetValue("ProxyEnable", 0);
registry.DeleteValue("ProxyServer");
}
-
افزودن URL به Favorites
public static void AddToFavorites(string Title, string URL)
{
StreamWriter wr =
File.CreateText(Environment.GetFolderPath(Environm ent.SpecialFolder.Favorites).ToString() + "\\" +
Title + ".url");
wr.WriteLine("[DEFAULT]");
wr.WriteLine("BASEURL=" + URL);
wr.WriteLine("[InternetShortcut]");
wr.WriteLine("URL=" + URL);
wr.Close();
}
بررسی اینکه کاربر فعلی ادمین هست یا نه
using System.Security.Principal;
public static bool IsAdmin()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
string role = "BUILTIN\\Administrators";
bool IsAdmin = principal.IsInRole(role);
return IsAdmin;
}
-
محو شدن فرم در هنگام نمایش و در هنگام بسته شدن
کد جالبی توو codeproject بود :
using System;using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Utility
{
/// <summary>
/// Base form class that provides fading/sliding effects on open/close of the form.
/// </summary>
public abstract class FadeForm : Form
{
#region Win32
const int AW_HIDE = 0X10000;
const int AW_ACTIVATE = 0X20000;
const int AW_HOR_POSITIVE = 0X1;
const int AW_HOR_NEGATIVE = 0X2;
const int AW_SLIDE = 0X40000;
const int AW_BLEND = 0X80000;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int AnimateWindow
(IntPtr hwand, int dwTime, int dwFlags);
#endregion
#region Variables
private bool _UseSlideAnimation;
#endregion
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="FadeForm"/> class.
/// </summary>
public FadeForm() : this(false) { }
/// <summary>
/// Initializes a new instance of the <see cref="FadeForm"/> class.
/// </summary>
/// <param name="useSlideAnimation">if set to <c>true</c> [use slide animation].</param>
public FadeForm(bool useSlideAnimation)
{
_UseSlideAnimation = useSlideAnimation;
}
#endregion
#region Overrides
/// <summary>
/// Raises the <see cref="E:System.Windows.Forms.Form.Load"/> event.
/// </summary>
/// <param name="e">An <see cref="T:System.EventArgs"/> that contains the event data.</param>
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
AnimateWindow(this.Handle, 1000, AW_ACTIVATE | (_UseSlideAnimation ? AW_HOR_POSITIVE | AW_SLIDE : AW_BLEND));
}
/// <summary>
/// Raises the <see cref="E:System.Windows.Forms.Form.Closing"/> event.
/// </summary>
/// <param name="e">A <see cref="T:System.ComponentModel.CancelEventArgs"/> that contains the event data.</param>
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
base.OnClosing(e);
if (e.Cancel == false)
{
AnimateWindow(this.Handle, 1000, AW_HIDE | (_UseSlideAnimation ? AW_HOR_NEGATIVE | AW_SLIDE : AW_BLEND));
}
}
#endregion
}
}
-
BrekPoint شرطی در سی شارپ
اگر برروی مکانی که breakpoint گذاشته شده راست کلیک کنید یک گزینه می بیند بنام condition شما می توانید با این امکان برای debug کردن شرط بگذارید . فقط دقت داشته باشید که سرعت برنامه پایین می آید
-
جدول ضرب رنگی
سلام
رنگهای دیگری را خودتان اضافه نمایید
using System;
namespace s02
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <=10; i++)
{
for (int j = 1; j<= 10; j++)
{
int result = j * i;
if (result % 2==0)
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.Beep();
}
if (result % 3 == 0)
{
Console.ForegroundColor = ConsoleColor.Yellow;
}
Console.Write(result + "\t");
Console.ResetColor();
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
-
جدول ضرب بکمک آرایه های دوبعدی
using System;
namespace s02
{
class Program
{
static void Main(string[] args)
{
var MultiplyArray = new int[10, 10];
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
MultiplyArray[i, j] = (i + 1)*(j + 1);
}
}
for (int i = 0; i <10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i %2==0)
{
Console.ForegroundColor = ConsoleColor.Yellow;
}
Console.Write( "{0}\t",MultiplyArray[i,j] );
Console.ResetColor();
}
Console.WriteLine();
}
}
}
}
-
تغییر رنگ حروف یک کلمه
using System;
using System.Threading;
namespace S031
{
enum WeekDay
{
Sundy=1,
Mondy=3,
}
class Iran
{
static void Main()
{
foreach (var VARIABLE in "Linq in Csharp")
{
Console.ForegroundColor = GetColor();
Console.Write(VARIABLE);
}
Console.ResetColor();
Console.ReadKey();
}
static ConsoleColor GetColor()
{
var r = new Random(DateTime.Now.Millisecond);
Thread.Sleep(100);
switch (r.Next(7))
{
case 0:
return ConsoleColor.DarkGray;
case 1:
return ConsoleColor.Blue;
case 2:
return ConsoleColor.Cyan;
case 3:
return ConsoleColor.Magenta;
case 4:
return ConsoleColor.White;
default:
return ConsoleColor.Red;
}
}
}
-
ایجاد یک کلمه 5 حرفی رندم
using System;
using System.Threading;
namespace Sc022
{
class Program
{
public static void Main()
{
var str= createRandomWord(5);
Console.WriteLine(str);
}
public static string createRandomWord(int lenght)
{
var temp = string.Empty;
var random = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < lenght; i++)
{
temp += (char)(random.Next((int)'a', (int)'z'));
}
return temp;
}
}
}
-
نقل قول: 1001 نکته در سی شارپ
ایجاد یک پنجره کنسول (Console Window) و اجرا دستورات به صورت مخفی در آن
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.FileName = "YourApp.exe";
startInfo.CreateNoWindow = true;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
منبع: stackoverflow.com