-
ايجاد رشته اي تصادفي از اعداد با طول مشخص
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/UploadF...domNumber.aspx
-
شبيه سازي عمل كليك ماوس روي يك كنترل با كدنويسي
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/247referenc.../15/78924.aspx
-
ذخیره 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;
-
از بین بردن کاراکتر های غیر مجاز در رشته های عددی
توسط متد زیر می تواند رشته عددی خالص را از هر رشته ای که حاوی کاراکتر های غیر عددی است به دست آورد.
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 ها سفارشی شده استفاده کنند. و یا متن را از فایل یا جایی دیگه می خونن که ممکنه ناخالصی داشته باشه
-
چند تابع
يه تابع ساده واسه اينكه ببينيم ورودي 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
-
Override كردن توابع از طريق snnipet ها
بنا به فرمايش يكي از دوستان عزيز:
براي 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;
}
-
writing to event log
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");
منبع
-
استفاده از متد Find در Generic List
با فرض اينكه lstTerm ليستي از كلاس Term است مي خواهيم ترمي را پيدا كنيم كه Id آن برابر با 88-87 باشد. lstTerms.Find(delegate(Term t) { return t.Id = "87-88"; });
-
1 ضمیمه
Concatenating Wave ، اتصال فایلهای Wave
در یک پروژه که نیاز به اعلام شماره ها بصورت گویا داشتم ، بعد از ظبط صدای اعداد ، برای اینکه فایلها رو پشت سر هم پخش کنم 2 تا مشکل اساسی داشتم.
1- ایجاد تاخیر در پخش اعداد بعدی (مثلا 120 رو بعد از پخش "یکصد و " یه مکثی ایجاد میشد تا بره سراغ فایل "بیست"
2-تشخیص اینکه کی یکصدو تمام میشه تا بیست صدا زده بشه سخت بود.
خلاصه به این نتیحه رسیدم که فایلهای Wave رو بهم بچشبونم و بصورت یک فایل Temp در بیارم و پخش کنم.
کلاس زیر رو پیدا کردم که خیلی عالیه و راحته. برای شروع 2 فایل رو بهم میچسبونه که به سادگی قابل افزایش به n فایل هست.
-
گرفتن کد اسکی و یونیکد کاراکتر ها
تبدیل به یونیکد
String ucode = String.Format("{0:x4}", (int)('a'));
// ucode = 0061
تبدیل به اسکی
String acode = (((int)('a')).ToString());
//acode=97
-
فرستادن پارامتر به برنامه email ویندوز
توسط متد زیر می توانید مستقیما برنامه 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.co m",
"this a sample subject for sample mail",
"Hi All, this is a sample code for sending parameters to outlook exprees");
}
نتیجه اجرا
-
پخش فایل صوتی موجود در Resource
برای دسترسی به فایلهای صوتی داخل 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);
-
تبديل اندازه colomn هاي يك سطر datagridview به حداكثر تعداد كاراكتر در همون ستون
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;
}
}
-
دسترسي به پيكره بندي سيستم در CLR
شايد براتون پيش بياد كه بخواهيد به فايل WEB.Config و يا App.Config در CLR دسترسي پيدا كنيد.
اگر بخواهيد با استفاده از منوي Add Reference اين كار رو انجام بديد خواهيد ديد كه در فهرست Referenceها خبري از System.configuration نيست.
براي اينكار بايد فايل پروژه ي خودتون رو كه ميتونه پسوند vbproj و يا csproj داشته باشه (بسته به اينكه با #C و يا VB نوشته شده) رو تو يك Editor متني باز كنيد و در بخش ItemGroup خط زير رو اضافه كنيد :
<Reference Include="System.configuration" />
فايل رو ذخيره كنيد و پروژه رو دوباره باز كنيد.
حالا مي تونيد به Application Configuration دسترسي داشته باشيد.
-
1 ضمیمه
ايجاد سايز سفارشي كاغذ براي چاپگر در سي شارپ
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/printi...per_sizes.aspx
-
1 ضمیمه
وابسته كردن يك نوع فايل (file extension) به برنامه شما
programmatically associate a file type on the system with your application
زماني كه ميخواهيد با دابل كليك كردن بر روي آيكن يك نوع خاص از فايلها (با پسوند دلخواه) آنها در برنامه شما باز شوند و ...
برگرفته شده از : http://www.codeproject.com/KB/dotnet...sociation.aspx
-
كنترل سرويس SQL Server از طريق كدنويسي
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("MSSQLSERV ER");
براي stop, start و يا pause كردن سرويس :
sc.Stop();
sc.Pause();
sc.Start();
و براي بدست آوردن حالت فعلي سرويس :
sc.Status
به كمك كلاس ServiceController قادريد كه ساير سرويسهاي ويندوز را نيز - بسته به داشتن مجوز لازم - كنترل نماييد.
-
پیدا کردن آتمی در یک مجموعه با استفاده از عبارت where در LINQ
اول یه لیست درست می کنیم و اون رو با رشته های 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);
-
رفع چشمك و پرش تصوير
چنانچه براي انجام كارهاي گرافيكي خود از مجموعه ي +GDI استفاده مي كنيد، بسيار محتمل است كه به هنگام انجام اعمال گرافيكي سنگين مثل Pan و Zoom تصوير يا ترسيمات گرافيكي با پرش يا چشمك زدن هاي متوالي مواجه شويد. براي رفع اين مشكل مي توانيد خاصيت DoubleBuffered مربوط به Form يا UserControl اي كه در آن ترسيمات انجام مي گيرند را true كنيد.
براي اطلاعات بيشتر در MSDN به ايندكس double buffering مراجعه كنيد.
-
بدست آوردن ليست برنامه هاي نصب شده بر روي سيستم
Get a list of installed software in C#
private string Getinstalledsoftware()
{
string Software = null;
string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninst all";
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
-
تست ارتباط با اينترنت از طريق پينگ كردن
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/