نکته های مفید و حرفه ای در سی شارپ C# - ali - 07-28-2014 01:55 PM
نکته اول: ایجاد دیتا تیبل و مقدار دهی اولیه به آن Datatable
کد:
DataTable dt1 = new DataTable(); // ایجاد شی از کلاس
dt1.Columns.Add("RowID", typeof(int)); // تعریف ستون
dt1.Columns.Add("StrDate", typeof(int)); // تعریف ستون
for (int i = 0; i < 100; i++) // حلقه تکرار 100 تایی
{
dt1.Rows.Add(new Object[] { i, i + 5 }); // درج مقدار
}
یک کلاس برای انجام عملیات بر روی پایگاه داده - ali - 07-28-2014 02:03 PM
این کلاس در زمانی کاربرد دارد که در فایل Web.config برای پروژه Connection String تعریف شده باشد.
کد:
using System;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Data;
using System.Data.Linq;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Globalization;
/// <summary>
/// یک کلاس مفید برای کار با پایگاه داده
/// </summary>
public class FirstClass
{
SqlConnection con;
public SqlCommand cmd;
DataTable dt;
SqlDataAdapter da;
public FirstClass()
{
con = new SqlConnection(ConfigurationManager.ConnectionStrings["WebSiteConnectionString"].ConnectionString);
cmd = new SqlCommand();
dt = new DataTable();
cmd.Connection = con;
da = new SqlDataAdapter(cmd);
}
public DataTable dbSelect(string sql)
{
DataTable dttt = new DataTable();
try
{
cmd.CommandText = sql;
con.Open();
da.Fill(dt);
con.Close();
return dt;
}
catch
{
con.Close();
return dttt;
}
finally
{
con.Close();
}
}
public void exeSp(string spName)
{
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = spName;
cmd.ExecuteNonQuery();
con.Close();
}
public void exeSqlCmd(string sql)
{
try
{
cmd.CommandText = sql;
con.Open();
cmd.ExecuteNonQuery();
}
catch { }
finally
{
con.Close();
}
}
}
دو متد برای برای بدست آوردن تاریخ شمسی - ali - 07-28-2014 02:05 PM
متد اول تاریخ جاری میلادی سیستم را به تاریخ شمسی تبدیل می نماید و متد دوم تاریخ میلادی را از ورودی دریافت می نماید.
کد:
public string dtShamsi()
{
string strMydate;
PersianCalendar calFar1 = new PersianCalendar();
strMydate = calFar1.GetYear(DateTime.Now).ToString() + "/" + calFar1.GetMonth(DateTime.Now).ToString("00") + "/" + calFar1.GetDayOfMonth(DateTime.Now).ToString("00");
return strMydate;
}
public String dtShamsi2(DateTime MiladiDate)
{
String dtShamsi = "";
PersianCalendar calFar1 = new PersianCalendar();
dtShamsi = calFar1.GetYear(MiladiDate).ToString() + "/" + calFar1.GetMonth(MiladiDate).ToString("00") + "/" + calFar1.GetDayOfMonth(MiladiDate).ToString("00");
return dtShamsi;
}
متد ارسال ایمیل در سی شارپ و asp.net - ali - 07-28-2014 02:11 PM
از این متد برای ارسال ایمیل در سی شارپ C# استفاده می شود. در این روش از SMTP استفاده شده است:
کد:
public void UDF_Authenticate(String Str_EmailTo)
{
//create the mail message
MailMessage mail = new MailMessage();
String Str_PassWord = GetUniqueKey(5);
//set the addresses
mail.From = new MailAddress("info@a00b.com");
mail.To.Add(Str_EmailTo.Trim());
//set the content
mail.Subject = "Password Information";
mail.Body = "<div style=\"direction: ltr;\"><span style=\"font-size: large;\"><u><em><strong> Your New PassWord:</u> " + Str_PassWord.Trim() + " </strong></em></span></div><div style=\"direction: ltr;\"><a href=\"http://www.a00b.com\"><span style=\"font-size: large;\"><u><em><strong>www.a00b.com</strong></em></u></span></a></div>";
mail.IsBodyHtml = true;
//send the message
SmtpClient smtp = new SmtpClient("mail.a00b.com");
smtp.Port = 25;
//to authenticate we set the username and password properites on the SmtpClient
smtp.Credentials = new NetworkCredential("info@a00b.com", "**********"); // در این محل اطلاعات کاربری ایمیل قرار می گیرد
smtp.Send(mail);
}
private String GetUniqueKey(int maxSize)
{
char[] chars = new char[62];
chars =
"ABCDEFGHJKLMNPQRSTUVWXYZ123456789".ToCharArray();
byte[] data = new byte[1];
RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
crypto.GetNonZeroBytes(data);
data = new byte[maxSize];
crypto.GetNonZeroBytes(data);
StringBuilder result = new StringBuilder(maxSize);
foreach (byte b in data)
{
result.Append(chars[b % (chars.Length)]);
}
return result.ToString();
}
و این هم یک متد دیگه که کمی کاملتره:
کد:
try
{
SmtpClient mySmtpClient = new SmtpClient("my.smtp.exampleserver.net");
// set smtp-client with basicAuthentication
mySmtpClient.UseDefaultCredentials = false;
System.Net.NetworkCredential basicAuthenticationInfo = new
System.Net.NetworkCredential("username", "password");
mySmtpClient.Credentials = basicAuthenticationInfo;
// add from,to mailaddresses
MailAddress from = new MailAddress("test@example.com", "TestFromName");
MailAddress to = new MailAddress("test2@example.com", "TestToName");
MailMessage myMail = new System.Net.Mail.MailMessage(from, to);
// add ReplyTo
MailAddress replyto = new MailAddress("reply@example.com");
myMail.ReplyTo = replyto;
// set subject and encoding
myMail.Subject = "Test message";
myMail.SubjectEncoding = System.Text.Encoding.UTF8;
// set body-message and encoding
myMail.Body = "<b>Test Mail</b><br>using <b>HTML</b>.";
myMail.BodyEncoding = System.Text.Encoding.UTF8;
// text or html
myMail.IsBodyHtml = true;
mySmtpClient.Send(myMail);
}
catch (SmtpException ex)
{
throw new ApplicationException
("SmtpException has occured: " + ex.Message);
}
catch (Exception ex)
{
throw ex;
}
متد تبدیل تاریخ شمسی به میلادی در سی شارپ C# - ali - 08-24-2014 10:53 AM
کد:
/// <summary>
/// متد تبدیل تاریخ شمسی به میلادی
/// قالب تاریخ ورودی یک رشته 12 کاراکتری می باشد
/// 1300/01/01 مثال
/// </summary>
/// <param name="ShamsiDate"></param>
/// <returns></returns>
public DateTime ShamsiToMiladi(String ShamsiDate)
{
DateTime MyMilDate;
String p1, p2, p3;
p1 = ShamsiDate.Substring(0, 4);
p2 = ShamsiDate.Substring(5, 2);
p3 = ShamsiDate.Substring(8, 2);
PersianCalendar pers = new PersianCalendar();
MyMilDate = pers.ToDateTime(int.Parse(p1), int.Parse(p2), int.Parse(p3), 0, 0, 0, 0);
dtMiladi = MyMilDate;
return MyMilDate;
}
متد تشخیص سال کبیسه در سی شارپ C# - ali - 08-24-2014 10:56 AM
کد:
/// <summary>
/// متد تشخیص سال کبیه در سی شارپ
/// خروجی عدد صفر نمایانگر سال کبیسه می باشد
/// </summary>
/// <param name="shamsiYaer"></param>
/// <returns></returns>
private int isKabiseh(String shamsiYaer)
{
int isKabise = 0;
if ((int.Parse(shamsiYaer) + 1) % 100 == 0 && (int.Parse(shamsiYaer) + 1) % 400 == 0)
{
isKabise = 0;
}
else if ((int.Parse(shamsiYaer) + 1) % 100 != 0 && (int.Parse(shamsiYaer) + 1) % 4 == 0)
{
isKabise = 0;
}
else
{
isKabise = 1;
}
return isKabise;
}
بدست آوردن مقدار value member و display member در combobox داخل Datagridview - ali - 12-10-2014 02:16 PM
برای این منظور از قطعه کد زیر استفاده می نمائیم:
کد:
for (int i = 0; i < Grd_RelationFields.Rows.Count; i++)
{
try
{
String Str_SelectedText = Convert.ToString((Grd_RelationFields.Rows[i].Cells["Column3"] as DataGridViewComboBoxCell).FormattedValue.ToString());
String Str_SelectedText2 = Convert.ToString((Grd_RelationFields.Rows[i].Cells["Column3"] as DataGridViewComboBoxCell).Value.ToString());
String Str_SelectedText3 = Convert.ToString((Grd_RelationFields.Rows[i].Cells["Column3"] as DataGridViewComboBoxCell).Items.Count.ToString());
//int int_SelectedVal = Convert.ToInt32(Grd_RelationFields.Rows[i].Cells["Column3"].Value);
MessageBox.Show(Str_SelectedText + " - " + Str_SelectedText2 + " - " + Str_SelectedText3);
}
catch
{ }
}
متدهای پر کربرد در مورد عکس در سی شارپ - ali - 12-26-2014 06:07 AM
متد تبدیل بایت به ایمیج Byte TO Image
کد:
/// <summary>
/// متد تبدیل آرایه ای از بایتها به ایمیج
/// </summary>
/// <param name="Byt_ArrayIn"></param>
/// <returns></returns>
public static Image UDF_ByteArrayToImage(byte[] Byt_ArrayIn)
{
return Image.FromStream(new MemoryStream(Byt_ArrayIn));
}
متد تبدیل عکس یا فایل به بایت Picture to Byte or File To Byte
کد:
/// <summary>
/// متد تبدیل عکس به بایت
/// </summary>
/// <param name="Str_ImageLocation"></param>
/// <returns></returns>
private static Byte[] UDF_ConvertImageToByte(String Str_ImageLocation)
{
return System.IO.File.ReadAllBytes(Str_ImageLocation);
}
متد تبدیل ایمیج به بایت Image To Byte
کد:
/// <summary>
/// متد تبدیل ایمیج به بایت
/// </summary>
/// <param name="img"></param>
/// <returns></returns>
public static byte[] UDF_ImageToByte2(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
یک متد نسبتا بهتر برای خواندن فایل و تبدیل به بایت File To Byte
کد:
public static byte[] UDF_ImageToByte(String filePath)
{
byte[] buffer;
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try
{
int length = (int)fileStream.Length; // get file length
buffer = new byte[length]; // create buffer
int count; // actual number of bytes read
int sum = 0; // total number of bytes read
// read until Read method returns 0 (end of the stream has been reached)
while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
sum += count; // sum is a buffer offset for next reading
}
finally
{
fileStream.Close();
}
return buffer;
}
متدی پر کاربرد که عکس را به صورت بایت دریافت می نماید و آن را به عکس بند انگشتی و یا عکسی با اندازه دلخواه که اندازه به صورت پارامتر ورودی داده می شود تبدیل می نماید.
کد:
public static Bitmap CreateThumbnail(byte[] byteArrayIn, int lnWidth, int lnHeight)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
System.Drawing.Bitmap bmpOut = null;
try
{
Bitmap loBMP = new Bitmap(returnImage);
ImageFormat loFormat = loBMP.RawFormat;
decimal lnRatio;
int lnNewWidth = 0;
int lnNewHeight = 0;
//*** If the image is smaller than a thumbnail just return it
if (loBMP.Width < lnWidth && loBMP.Height < lnHeight)
return loBMP;
if (loBMP.Width > loBMP.Height)
{
lnRatio = (decimal)lnWidth / loBMP.Width;
lnNewWidth = lnWidth;
decimal lnTemp = loBMP.Height * lnRatio;
lnNewHeight = (int)lnTemp;
}
else
{
lnRatio = (decimal)lnHeight / loBMP.Height;
lnNewHeight = lnHeight;
decimal lnTemp = loBMP.Width * lnRatio;
lnNewWidth = (int)lnTemp;
}
bmpOut = new Bitmap(lnNewWidth, lnNewHeight);
Graphics g = Graphics.FromImage(bmpOut);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
//g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight);
g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight);
loBMP.Dispose();
}
catch
{
return null;
}
return bmpOut;
}
بدست آوردن مقدار موجود در یک سلول دیتا گرید ویو - ali - 12-26-2014 06:09 AM
کد:
private void Dg_BgPics_CellClick(object sender, DataGridViewCellEventArgs e)
{
String Str_SelectedID = Dg_BgPics.Rows[Dg_BgPics.CurrentRow.Index].Cells[0].Value.ToString();
}
دو متد بسیار جالب برای کدگذاری و کد کشای متن در سی شارپ - ali - 12-28-2014 08:37 AM
برای راحتی کار شما کل کلاس رو همیجا گذاشتم که شامل دو متد برای کد گذاری و کدگشایی TEXT می باشد. مقدار فیلد Str_TempKey در هر دو متد باید یکسان باشد. ضمنا شما میتوانید مقدار کلید را (Str_TempKey) به عنوان پارامتر ورودی به متد بدهید و از این کلاس می توانید برای کد گذاری و رمزگذاری تمامی متنها استفاده نمایید. مخصوصا کلمه های عبور. با کمی تغییر در این متد می توانید حتی فایلهای خود را نیز کد گذاری نمایید:
کد:
using System;
using System.Security.Cryptography;
using System.Text;
namespace LibraryMembers.Classes
{
class Class_EncDecToolStripAcc
{
/// کلاس کد گذاری و کد گشایی کد سی آر سی جعبه ابزار
/// <summary>tblToolStripsItems
/// Encrypt the given string using the specified key.
/// </summary>
/// <param name="Str_ToEncrypt">The string to be encrypted.</param>
/// <param name="strKey">The encryption key.</param>
/// <returns>The encrypted string.</returns>
public static string UDF_Encrypt(string Str_ToEncrypt)
{
try
{
using (TripleDESCryptoServiceProvider objDESCrypto = new TripleDESCryptoServiceProvider())
{
MD5CryptoServiceProvider objHashMD5 = new MD5CryptoServiceProvider();
byte[] byteHash;
byte[] byteBuff;
String Str_TempKey = @"Aj@#C$7LTool$tripAcc)+_)%$@!#hgFj";
byteHash = objHashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(Str_TempKey));
objHashMD5 = null;
objDESCrypto.Key = byteHash;
objDESCrypto.Mode = CipherMode.ECB;//CBC, CFB
byteBuff = ASCIIEncoding.ASCII.GetBytes(Str_ToEncrypt);
return Convert.ToBase64String(objDESCrypto.CreateEncryptor().TransformFinalBlock(byteBuff, 0, byteBuff.Length));
}
}
catch (Exception ex)
{
return "Wrong Input. " + ex.Message;
}
}
/// <summary>
/// Decrypt the given string using the specified key.
/// </summary>
/// <param name="Str_ToDencrypt">The string to be decrypted.</param>
/// <param name="strKey">The decryption key.</param>
/// <returns>The decrypted string.</returns>
public static string UDF_Dencrypt(string Str_ToDencrypt)
{
try
{
TripleDESCryptoServiceProvider objDESCrypto = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider ObjHashToMd5 = new MD5CryptoServiceProvider();
byte[] byteBuff;
String Str_TempKey = @"Aj@#C$7LTool$tripAcc)+_)%$@!#hgFj";
ObjHashToMd5 = null;
objDESCrypto.Key = ObjHashToMd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(Str_TempKey));
objDESCrypto.Mode = CipherMode.ECB; //CBC, CFB
byteBuff = Convert.FromBase64String(Str_ToDencrypt);
string strDecrypted = ASCIIEncoding.ASCII.GetString
(objDESCrypto.CreateDecryptor().TransformFinalBlock
(byteBuff, 0, byteBuff.Length));
objDESCrypto = null;
return strDecrypted;
}
catch (Exception ex)
{
return "Wrong Input. " + ex.Message;
}
}
}
}
|