private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show(sender.ToString());
}
و
private void button1_Click(object sender, EventArgs e)
{
System.EventArgs arg = new System.EventArgs();
Form1_Load(button1.Text, arg);
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show(sender.ToString());
}
و
private void button1_Click(object sender, EventArgs e)
{
System.EventArgs arg = new System.EventArgs();
Form1_Load(button1.Text, arg);
}
private void DrawCenterString(object sender, PaintEventArgs e)به قسمت آبی رنگ که سایز نوشته رو بدست میاورد دقت کنید.
{
Control ct = sender as Control;
string text = "Middle String";
SizeF stringSize = e.Graphics.MeasureString(text, ct.Font);
e.Graphics.DrawString(text, Font,
Brushes.Red,
(ct.Width - stringSize.Width) / 2,
(ct.Height - stringSize.Height) / 2);
}
مثال - برای نوشتن در مرکز یک پنل :
private void panel1_Paint(object sender, PaintEventArgs e)منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
{
DrawCenterString(sender, e);
}
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:03 عصر
private void Form1_Paint(object sender, PaintEventArgs e)منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
{
// حالت معمولی
e.Graphics.DrawEllipse(new Pen(Color.Red, 10), 30, 30, 50, 50);
// SmoothingMode.AntiAlias روانسازی به کمک
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
e.Graphics.DrawEllipse(new Pen(Color.Blue, 10), 30, 100, 50, 50);
}
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:04 عصر
private void DrawButton(Graphics g, ref Rectangle rc, ButtonState state)منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
{
ControlPaint.DrawButton(g, rc, state);
g.DrawString(state.ToString(), Font, Brushes.Black,
rc.Width + 5, rc.Y + (rc.Height - Font.Height) / 2);
rc.Offset(0, rc.Height + 5);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = new Rectangle(0, 0, 50, 25);
DrawButton(e.Graphics, ref rc, ButtonState.All);
DrawButton(e.Graphics, ref rc, ButtonState.Checked);
DrawButton(e.Graphics, ref rc, ButtonState.Flat);
DrawButton(e.Graphics, ref rc, ButtonState.Inactive);
DrawButton(e.Graphics, ref rc, ButtonState.Normal);
DrawButton(e.Graphics, ref rc, ButtonState.Pushed);
}
private void DrawCaptionButton(Graphics g, ref Rectangle rc,منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
CaptionButton button, ButtonState state)
{
ControlPaint.DrawCaptionButton(g, rc, button, state);
g.DrawString(state.ToString() + ", " + button.ToString(), Font,
Brushes.Black, rc.Width + 5, rc.Y + (rc.Height -
Font.Height) / 2);
rc.Offset(0, rc.Height + 5);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = new Rectangle(0, 0, 25, 25);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Close,
ButtonState.All);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Help,
ButtonState.Checked);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Maximize,
ButtonState.Flat);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Minimize,
ButtonState.Inactive);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Restore,
ButtonState.Normal);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Close,
ButtonState.Pushed);
}
private void DrawCheckBox(Graphics g, ref Rectangle rc, ButtonState state)
{
ControlPaint.DrawCheckBox(g, rc, state);
g.DrawString(state.ToString() , Font, Brushes.Black,
rc.Width + 5, rc.Y + (rc.Height - Font.Height) / 2);
rc.Offset(0, rc.Height + 5);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = new Rectangle(0, 0, 25, 25);
DrawCheckBox(e.Graphics, ref rc, ButtonState.All);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Checked);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Flat);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Inactive);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Normal);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Pushed);
}
منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
private void DrawBorder3D(Graphics g, ref Rectangle rc,
Border3DStyle borderStyle)
{
ControlPaint.DrawBorder3D(g, rc, borderStyle);
g.DrawString(borderStyle.ToString(), Font, Brushes.Black,
rc.Width + 5, rc.Y + (rc.Height - Font.Height) / 2);
rc.Offset(0, rc.Height + 5);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = new Rectangle(0, 0, 50, 25);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Adjust);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Bump);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Etched);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Flat);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Raised);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.RaisedInner);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.RaisedOuter);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Sunken);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.SunkenInner);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.SunkenOuter);
}
منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
عادت کنید که همیشه از using استفاده کنید.
برای مثال :
using (FileStream FS = new FileStream("Test.txt", FileMode.Create))که اگر بخواهید مثال بالا را به بدون استفاده از using پیاده سازی کنید باید چیزی شبیه به تیکه کد زیر بنویسید :
{
FS.WriteByte((byte)1);
FS.WriteByte((byte)2);
FS.WriteByte((byte)3);
using (StreamWriter SW = new StreamWriter(FS))
{
SW.WriteLine("some text.");
}
}
FileStream FS = new FileStream("Test.txt", FileMode.Create);همینطور که میبینید استفاده از using کد شما را راحتتر، خواناتر و کوتاه تر میکند.
try
{
FS.WriteByte((byte)1);
FS.WriteByte((byte)2);
FS.WriteByte((byte)3);
StreamWriter SW = new StreamWriter(FS);
try
{
SW.WriteLine("some text.");
}
finally
{
if (SW != null)
{
((IDisposable)SW).Dispose();
}
}
}
finally
{
if (FS != null)
{
((IDisposable)FS).Dispose();
}
}
منبع : "C# 3.0 Cookbook™, Third Edition"
using System;
using System.Collections;
using System.Diagnostics;public sealed class EventLogSearch
{
private EventLogSearch() { }
public static EventLogEntry[] FindTimeGeneratedAtOrBefore(
IEnumerable logEntries, DateTime timeGeneratedQuery)
{
ArrayList entries = new ArrayList();
foreach (EventLogEntry logEntry in logEntries)
{
if (logEntry.TimeGenerated <= timeGeneratedQuery)
{
entries.Add(logEntry);
}
}
EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];
entries.CopyTo(entriesArray);
return (entriesArray);
}
public static EventLogEntry[] FindTimeGeneratedAtOrAfter(
IEnumerable logEntries, DateTime timeGeneratedQuery)
{
ArrayList entries = new ArrayList();
foreach (EventLogEntry logEntry in logEntries)
{
if (logEntry.TimeGenerated >= timeGeneratedQuery)
{
entries.Add(logEntry);
}
}
EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];
entries.CopyTo(entriesArray);
return (entriesArray);
}
public static EventLogEntry[] FindUserName(IEnumerable logEntries,
string userNameQuery)
{
ArrayList entries = new ArrayList();
foreach (EventLogEntry logEntry in logEntries)
{
if (logEntry.UserName == userNameQuery)
{
entries.Add(logEntry);
}
}
EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];
entries.CopyTo(entriesArray);
return (entriesArray);
}
}
منبع : "C# 3.0 Cookbook™, Third Edition"
public static double CelsiusToFahrenheit(double celsius)
{
return (1.8 * celsius) + 32;
}
public static double FahrenheitToCelsius(double fahrenheit)
{
return 1.8 * (fahrenheit - 32);
}
public static double CelsiusToKelvin(double celsius)
{
return celsius + 273;
}
public static double KelvinToCelsius(double kelvin)
{
return kelvin - 273;
}
public static double FahrenheitToKelvin(double fahrenheit)
{
return CelsiusToKelvin(FahrenheitToCelsius(fahrenheit));
}
public static double KelvinToFahrenheit(double kelvin)
{
return CelsiusToFahrenheit(KelvinToCelsius(kelvin));
}
منبع : "C# 3.0 Cookbook™, Third Edition"
این آموزش همراه با یک مثال انجام میشود.
(توجه : در بهینه نبودن این مثال شک نداشته باشید چون فی البداهه و صرف آموزش نوشته شده است)
مثال - میخواهیم تمامی فایلهای موجود در پوشه ی ویندوز را توسط یک thread پشت زمینه (مستقل از UI Thread) در یک لیست باکس نمایش دهیم.
بلافاصله و بدون مقدمه؛ ابتدا یک آبجکت از نوع BackgroundWorker بسازید و در زمان کلیک شدن یک دکمه مقادیر آن را به شکل زیر تغییر دهید :
BackgroundWorker worker = new BackgroundWorker();خط آبی شده حاکی از آن است که worker میتواند در زمان اجرا میزان پیشرفت خود را گزارش کند(که باعث توانایی کار کردن با عناصر UI بصورت مستقیم و بدون استفاده از delegate میشود)
private void button1_Click(object sender, EventArgs e)
{
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged );
worker.RunWorkerAsync(new DirectoryInfo(@"C:\Windows"));
}
سپس ایونت هندلرها رو تخصیص داده
و در خط آخر نیز دستور اجرای آسنکرون اون رو با یک پارامتر ورودی را صادر کردیم.
کار زمانبری که میخواهیم در پشت زمینه انجام شود را در رویداد DoWork مینویسیم و این همان رویدادی ست که با دستور worker.RunWorkerAsync در تیکه کد قبلی تحریک میشود :
void worker_DoWork(object sender, DoWorkEventArgs e)همانطور که مشاهده کردید در خط اول متود بالا پارامتر ورودی را در قالب یک DirectoryInfo در آوردیم که بتوانیم از آن استفاده کنیم.
{
DirectoryInfo primaryDir = e.Argument as DirectoryInfo;
int i = 0;
foreach (DirectoryInfo dir in primaryDir.GetDirectories())
{
foreach (FileInfo file in dir.GetFiles())
{
worker.ReportProgress(i++, file.FullName);
}
}
}
و به ازای هر فایل شناخته شده (البته در عمل : بهتر است اینکار مثلا به ازای هر 100 فایل پیدا شده انجام شود) یک گزارش از میزان پیشرفت همراه با پارامترهای شماره فایل و نام آن میفرستیم.
و در نهایت برای منعکس کردن پیشرفتهای لحظه ای و اختصاص آنها به لیست باکس مینویسیم:
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)توجه کنید که در کد بالا مقدار e.UserState همان آبجکتی است که در زمان DoWork ارسال کردید.
{
listBox1.Items.Add(e.ProgressPercentage.ToString() + " : " + e.UserState.ToString());
}
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:05 عصر
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;
[DllImport("user32")]و مثالی از طریقه ی استفاده :
internal static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
internal static extern void ReleaseDC(IntPtr dc);
public void PaintRectangleToScreen()
{
IntPtr deskDC = GetDC(IntPtr.Zero);
Graphics g = Graphics.FromHdc(deskDC);
Font font = new Font("Arial Black", 36);
DrawStringOnCenter(g, "Sale 1387 mobarak!", font, new Point(0, -25));
font = new Font("Arial Black", 18);
DrawStringOnCenter(g, "by: Sinpin", font, new Point(0, 25));
Rectangle rect = new Rectangle(200, 300,
Screen.PrimaryScreen.Bounds.Width - 400,
Screen.PrimaryScreen.Bounds.Height - 600);
g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.DodgerBlue))
, rect);
g.DrawRectangle(new Pen(Color.DodgerBlue, 3), rect);
g.Dispose();
ReleaseDC(deskDC);
}
private void DrawStringOnCenter(Graphics g, string str, Font font, Point offset)
{
SizeF size = g.MeasureString(str, font);
g.DrawString(str, font, Brushes.White,
new PointF(
(Screen.PrimaryScreen.Bounds.Width - size.Width) / 2 + offset.X,
(Screen.PrimaryScreen.Bounds.Height - size.Height) / 2 + offset.Y)
);
}
private void Form1_Load(object sender, EventArgs e)این یک مثال خیلی ساده از ترسیم مستقیم بر دسکتاپ بود.
{
PaintRectangleToScreen();
this.Close();
}
و این یک مثال واقعی تر : http://www.codeproject.com/KB/applications/pcalgen.aspx
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:09 عصر
در تاپیک زیر بحثهایی درمورد ساخت یوزرکنترل و ایجاد رویدادهایی برای آن انجام گرفت و دو پروژه نمونه نیز آپلود گردید :
https://barnamenevis.org/showthread.php?t=94791
https://barnamenevis.org/showpost.php?p=466653
https://barnamenevis.org/showpost.php?p=466715
Decorator Pattern
این pattern در طبقه بندی الگوهای ساختاری جای دارد و امکان افزودن قابلیتها و تزیینات جدید به یک آبجکت را بصورت داینامیک و در زمان اجرا ممکن میکند.
این امکان بوسیله ی افزودن یک کلاس جدید (decorator) ممکن میشود که کلاس اصلی را wrap میکند. این wrapping معمولا با پاس دادن آبجکت اصلی بعنوان یک پارامتر به constructor decorator انجام میشود.
Decorator قابلیتهای جدید را در آبجکت پیاده سازی میکند و باید همان اینترفیسی را که کلاس اصلی پیاده سازی میکند، پیاده سازی کند.
در زمان اجرا میتوان به یک آبجکت هم decorator افزود و هم کاست بدون آنکه مصرف کننده متوجه تغییرات گردد.
Decorating در واقع بعنوان روش جایگزین subclassing (با انعطاف بیشتر) جهت توسعه قابلیتهاست با این تفاوت که :گاه در خیلی از مسایل بظاهر مشکل که صدها کلاس مشتق شده با روابطی پیچیده دارند؛ با پیاده سازی این الگو به یک طراحی آسان و خوانا خواهیم رسید.
- Subclassing رفتارهای جدیدی را در زمان کامپایل(compile-time) اضافه میکند در حالیکه decorating میتونه رفتارهای جدیدی را در زمان اجرا(runtime) اضافه نماید.
- با decorating میتوانیم یک قابلیت را تنها به یک آبجکت خاص از یک کلاس بدهیم بدون آنکه سایر آبجکتهای آن کلاس تغییر کنند.
یک مثال قابل دانلود :
http://www.codeproject.com/KB/archit...Decorator.aspx
منابع :
http://www.dofactory.com/Patterns/PatternDecorator.aspx
http://www.informit.com/articles/article.aspx?p=31350
http://en.wikipedia.org/wiki/Decorator_pattern
آخرین ویرایش به وسیله sinpin : دوشنبه 05 فروردین 1387 در 21:59 عصر
Singleton Pattern
هدف : میخواهیم تضمین کنیم که از یک کلاس تنها بتوان یک آبجکت (حالت ساده و متعارف سینگلتون) ایجاد کرد و همه ی درخواستها نیز تنها به همان یک آبجکت هدایت شوند و نیز بتوان یک دسترسی عمومی به آن داشت.
اولین قدم : سازنده ی کلاس را private میکنیم
چرا private ؟ - پاسخ : تا هیچکسی نتواند از کلاس آبجکت بسازد.
دومین قدم : یک فیلد استاتیک از نوع خود کلاس تعریف میکنیم.
چرا استاتیک : چون قرار است در یک متود استاتیک از آن استفاده کنیم.
چرا private : چون قرار است امکان دسترسی به این آبجکت از طریق یک متود یا پراپرتی صورت گیرد و دسترسی مستقیم مطلوب نیست.
سومین قدم : ایجاد یک پراپرتی یا متود public و استاتیک که فیلد را برمیگرداند.
چرا public ؟ چون میخواهیم از همه جا قابل دسترسی باشد.
چرا استاتیک ؟ چون آبجکتی از کلاس ندارم و ناچارا باید دسترسی به این متود یا پراپرتی در سطح کلاس باشد.
پس تا اینجا داریم :
public sealed class Singletonمعمولا بهتر است این پیاده سازی بصورت lazy instantiation باشد (یعنی تا قبل از اولین invoking آبجکت مقداردهی اولیه نشود) :
{
// Private Constructor
Singleton() { }
// Private object instantiated with private constructor
static readonly Singleton instance = new Singleton();
// Public static property to get the object
public static Singleton UniqueInstance
{
get { return instance; }
}
}
public class Singletonاین الگو به شدت در طراحیهای مختلف و الگوهای دیگر (مانند : Abstract Factory, Façade , ...) مورد استفاده دارد.
{
// Private constructor
Singleton() { }
// Nested class for lazy instantiation
class SingletonCreator
{
static SingletonCreator() { }
// Private object instantiated with private constructor
internal static readonly
Singleton uniqueInstance = new Singleton();
}
// Public static property to get the object
public static Singleton UniqueInstance
{
get { return SingletonCreator.uniqueInstance; }
}
}
____________________________
کدها از کتاب : http://www.oreilly.com/catalog/9780596527730
منابع :
http://en.wikipedia.org/wiki/Singleton_pattern
http://www.dofactory.com/Patterns/PatternSingleton.aspx
- این پست جابجا شد -
این کد را در کلاس مربوط به کنترل TextBox خود بنویسید :
protected override bool ProcessDialogKey(Keys keyData)و در مورد استفاده در کنترلهای استاندارد :
{
if (keyData == Keys.Return)
SendKeys.Send("{TAB}");
return base.ProcessDialogKey(keyData);
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Return)
SendKeys.Send("{TAB}");
}
TextBox عددی
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsDigit( e.KeyChar ) || char.IsControl( e.KeyChar ) ) )
{
e.Handled = true;
}
}
TextBox عددی با اعشار
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsDigit( e.KeyChar) || char.IsControl( e.KeyChar ) ||(e.KeyChar== (char )46)) )
{
e.Handled = true;
}
}
TextBox فقط کاراکنری
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsLetter( e.KeyChar ) || char.IsControl( e.KeyChar ) ) )
{
e.Handled = true;
}
}
TextBox برای فقط حروف بزرگ
TextBox برای فقط حروف کوچک
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsUpper( e.KeyChar ) || char.IsControl( e.KeyChar )) )
{
e.Handled = true;
}
}
چک کردن TextBoxهای خالی (میتوانید کلیه TextBox های روی فرمتان را به آن ارسال کنید )
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsLower( e.KeyChar ) || char.IsControl( e.KeyChar )) )
{
e.Handled = true;
}
}
TextBox اعشاری(با علامت اعشار مربوط به هر منطقه)
public static bool ChkEmpty(params System.Windows.Forms.TextBox[ ] tb) { int i; for (i = 0; i < tb.Length; i++)
{
if (tb[i].Text.Trim() == "")
{
MessageBox.Show("Don't keep field empty");
tb[i].Focus();
return false;
}
return true;
}
string DecimalSeparator = Thread.CurrentThread.CurrentCulture.NumberFormat.N umberDecimalSeparator;
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ( !( char.IsDigit( e.KeyChar) || char.IsControl( e.KeyChar ) || (DecimalSeparator.IndexOf(e.KeyChar) != -1 ) ) )
{
e.Handled = true;
}
}
منبع : مقداری CodeProject
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:23 عصر
برای ساخت یک Connection String بدون نیاز به Visual Studio ، به روش زیر عمل میکنیم:Connection String درون فایل ایجاد شده است.(البته این ارتباط برای OLE DB است که می توانید این قسمت را حذف کنید)
- یک فایل جدید ایجاد کرده و پسوند آنرا به "udl" تغییر میدهیم. (مثلا یک فایل متنی که می شود New Text file.udl)
- میبینید که آیکون آن تغییر کرد
- آنرا باز کنید. پنجره مشخصات Data Link باز میشود
- برای ایجاد Connection String برای SQL گزینه Microsoft OLE DB Provider For SQL Server را از لبه Provider انتخاب کنید
- دکمه Next را زده و یا به لبه Connection بروید
- از این قسمت تمامی مشخصههای ارتباط را میتوانید تعیین کنید
- بعد از مشخص کردن تمامی پارامترهای مورد نیاز دکمه Test Connection را برای اطمینان از درستی آن بزنید. اگر همه چیز درست است پنجرا را ببندید
- حال فایلی که ابتدا ایجاد کردید را با Notepad باز کنید.
اگر از User و Password استفاده میکنید، تیک Allow Saving Password را بزنید تا پسورد در فایل ذخیره شود.
منبع : CodeProject
آخرین ویرایش به وسیله razavi_university : پنج شنبه 15 فروردین 1387 در 13:58 عصر دلیل: باز یادم رفت امضام رو بردارم
شاید نیاز داشته باشید بفهمید کاربر از موس استفاده میکند یا نه؛ و در صورتی که استفاده میکند اطلاعاتی از موس(تعداد دکمه، Wheel)
این اطلاعات و یا سایر اطلاعاتی را که از سیستم کاربر میخواهید میتوانید در کلاس Enviroment بیابید.
SystemInformation.MousePresent.ToString()
SystemInformation.MouseButtons.ToString()
SystemInformation.MouseButtonsSwapped.ToString()
SystemInformation.MouseWheelPresent.ToString()
آخرین ویرایش به وسیله razavi_university : شنبه 17 فروردین 1387 در 13:11 عصر دلیل: (به سفارش مدیر ;) )
یادمه که قبلا یکی از دوستان دنبال روشی برای اینکار می گشت
برای اینکار حدود 100 خط نوشته بود که در اون از حلقه های تو در تو استفاده کرده بود و عملا جواب نمی داد
با این چند خط به راحتی می تونید اینکارو انجام بدید
using System.Drawing.Drawing2D;
privatestaticImage fill_layer(PictureBox Pic_Box,Image img,Color Layer_color,int Percent)
{
//از img به عنوان بک آپ استفاده می شود
//percent درصد شفافیت است
Pic_Box.Image = img;
Bitmap bmp_img = newBitmap(Pic_Box.Image);
Graphics ghp = Graphics.FromImage(bmp_img);
LinearGradientBrush LineaBrush;
LineaBrush = newLinearGradientBrush(newRectangle(0, 0, bmp_img.Width, bmp_img.Height), Color.FromArgb(Percent, Layer_color), Color.FromArgb(Percent, Layer_color), LinearGradientMode.BackwardDiagonal);
ghp.FillRectangle(LineaBrush, newRectangle(0, 0, bmp_img.Width, bmp_img.Height));
return (Image)bmp_img;
}
سورس برنامه قرار داده شده که همه چیز اونجا مشخص شده.
pictureBox1.Image = fill_layer(pictureBox1,pictureBox2.Image, Color,Value);
---------------------------------------------
ضمیمه تکمیل شده که امکان بینهایت لایه گذاری و نیز ذخیره عکس را دارد را می توانید دانلود کنید
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:25 عصر دلیل: تکمیل پست
برای افزودن آیکن مورد نظر خود به یک کامپوننت کافیست که موارد زیر را رعایت کنید :برای توضیحات کاملتر گوشه هایی از متن اصلی کتاب رو مشاهده میکنید :
- فایل تصویر باید از نوع bitmap و دقیقا همنام کلاس اما با پسوند bmp باشد
- اندازه ی تصویر مربوطه باید حتما 16x16 باشد وگرنه بصورت اتوماتیک برای رسیدن به آن سایز بریده خواهد شد.
- تصویر انتخابی باید از نوع 16 رنگ باشد
- و ...
The Toolbox Icon
Adding a Toolbox icon is refreshingly easy. All you need to do is add a bitmap to your project and follow
these rules:
• The bitmap file must have the same name as your custom control class (but with the extension
.bmp). For example, you would use a bitmap named CustomTextBox.bmp for the
CustomTextBox control.
• The bitmap must be 16×16 pixels. Otherwise, it will be mangled when Visual Studio
attempts to scale it.
• The bitmap must use only 16 colors.
• Once you add the bitmap file, you must use the Properties window to set the Build Action to
Embedded Resource.
Incidentally, it’s possible to use a toolbox icon that uses a filename that doesn’t match the name
of your control class. In this case, you need the help of the ToolboxBitmap attribute. For example, the
following code configures the CustomTextBox control to use a bitmap named CustomTextBox1.bmp:
[ToolboxBitmap(typeof(CustomTextBox), "CustomTextBox1.bmp")]
public class CustomTextBox : WebControl, IPostBackDataHandler
{ ... }You can also use this trick to place bitmaps in a separate subfolder in your project. For example,
here’s how you would refer to a bitmap in a folder named Images:
[ToolboxBitmap(typeof(CustomTextBox), @"Images\CustomTextBox1.bmp")]
Finally, it’s also possible to steal bitmaps from core ASP.NET controls, using code like this:
[ToolboxBitmap(typeof(System.Web.UI.WebControls.Tex tBox))]منبع کتاب : http://www.amazon.com/Pro-ASP-NET-3-.../dp/1590598938If you’re creating a simple control, all you may need to do is add a set of descriptive properties
and a toolbox icon. However, more complex controls often require other considerations. These
range from code serialization issues (how the control tag is created when you use the Properties window)
to control designers (advanced tools for customizing the design-time HTML your control
renders). In the rest of the chapter, you’ll take a look at these topics.
آخرین ویرایش به وسیله sinpin : یک شنبه 18 فروردین 1387 در 06:50 صبح
از کلاس stopwatch که در فضای نام System.Diagnostics قرار داره هم می تونید استفاده کنید.
// Create an instance of the new StopWatch class
Stopwatch myWatch = new Stopwatch();
// Start the timer
myWatch.Start();
//Code Here...
// Now we can stop the timer and display the elapsed time along
myWatch.Stop();
elapsedTimeTextLabel.Text = myWatch.ElapsedMilliseconds.ToString() ;
به نقل از ezamnejad کاربر همین سایت
private void Form1_Load(object sender, EventArgs e)
{
//تنظیم زمان تکرار بر حسب میلی ثانیه
timer1.Interval = 1000;
timer1.Start();
timer1_Tick(sender, e);
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = DateTime.Now.ToString();
}
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:25 عصر
چطور میتوان یک فرم رو سایه دار کرد ؟
کد زیر را در فرم مورد نظر بنویسید :
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private const int CS_DROPSHADOW = 0x00020000;
protected override CreateParams CreateParams
{
get
{
CreateParams p = base.CreateParams;
p.ClassStyle |= CS_DROPSHADOW;
return p;
}
}
}
دقت داشته باشید که برای نمایش سایه باید تیک مربوط به نمایش سایه ی ماوس را زده باشید (به تصویر ضمیمه شده مراجعه کنید)
منیع : http://www.codeproject.com/KB/cs/Let...opAShadow.aspx
گاهی لازمه شما بخشی از یک پروژه و یا فایلهایی از آن را موقتا غیرقابل کامپایل کنید.
یک مثال - میخواهید بخشی از یک برنامه رو تست کنید اما کلاسی را که جدیدا نوشتید دارای خطای زمان کامپایل است و اجازه ی اجرا شدن برنامه را نمیدهد و گاهی لزومی نداره که ابتدا اون کلاس رو کاملا رفع مشکل کنید تا بعد بتونید برنامه رو تست کنید.
برای غیرقابل کامپایل کردن بخشی از یک پروژه :
روی آن فایل یا فولدر مورد نظر کلیک راست کرده و گزینه ی Exclude From Project را انتخاب کنید.
راه دیگر اینستکه :
پسوند فایلهایی را که میخواهید موقتا کامپایل نشوند را به چیزی غیر از cs (برای مثال : cs.bak) تغییر دهید.
برنامه ای که مشابه ColorBalance فوتوشاپ عمل می کند
به کمک این برنامه می توانید تعادل رنگی قرمز، سبز، آبی، و زرد را در
عکس های مورد نظر خود تغییر دهید.
می دونم که کسی عقلشو از دست نداده که از این برنامه برای اینکار
استفاده کنه ولی نمونه بسیار خوبی برای اینکاره.
توی برنامه از 4 کنترل TrackBar استفاده شده که به صورت لیستی به فرم
اضافه میشن، نام رنگ ها هم همینطور؛ ازین رو به سادگی و با 3 تغییر بسیار ساده
می تونید تعداد رنگ ها را تغییر دهید.
برای اینکار مقدار CNT را تغییر داده و رنگ ها و نام های خود را به آرایه ها اضافه یا کم
کنید، طول فرم هم بسته به تعداد اونها تغییر می کنه.
تعریف متغیرها
staticint CNT = 4;
publicstaticList<TrackBar> tbs = newList<TrackBar>();
Color[] clr = newColor[] { Color.Red, Color.Green, Color.Blue, Color.Yellow};
string[] lb = newstring[] { "R", "G", "B", "Y"};
Image img2,img_org;
ColorBalance
privatestaticImage fill_layer_ARGB(PictureBox PicBox, Image img,Color[] colr)
{
PicBox.Image = img;
Bitmap bmp_img = newBitmap(PicBox.Image);
Graphics ghp = Graphics.FromImage(bmp_img);
LinearGradientBrush LineaBrush;
for (int i = 0; i < CNT; i++)
{
LineaBrush = newLinearGradientBrush(newRectangle(0, 0, bmp_img.Width, bmp_img.Height), Color.FromArgb(tbs[i].Value, colr[i]), Color.FromArgb(tbs[i].Value, colr[i]), LinearGradientMode.BackwardDiagonal);
ghp.FillRectangle(LineaBrush, newRectangle(0, 0, bmp_img.Width, bmp_img.Height));
}
return (Image)bmp_img;
}
اضافه کردن TrackBar ها و Label ها
void add_tracks()
{
for (int i = 0; i < CNT; i++)
{
TrackBar tb = newTrackBar();
tb.Size = newSize(114, 45);
tb.Location = newPoint(i * 114 + 214, 545);
tb.Enabled = false;
tb.Minimum = 0;
tb.Maximum = 255;
tb.Value = 0;
tb.TickStyle = TickStyle.None;
tb.ValueChanged += newEventHandler(tb_ValueChanged);
tbs.Add(tb);
Label l = newLabel();
l.Text = lb[i];
l.Location = newPoint(i * 114 + 260, 567);
this.Controls.Add(l);
}
this.Controls.AddRange(tbs.ToArray());
this.Width += (CNT - 4) * 110;
label1.Left = (int)((pictureBox1.Width - label1.Width) / 2);
}
مثالی از برنامه داخل تصاویر اومده
همونطور که می دونید ترکیب 2 رنگ زرد و آبی میشه سبز
که داخل تصویر مشخصه
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:26 عصر دلیل: برداشتن امضا
اتصال به SqlServer با استفاده از IP Address
SQL Server network libraries فایلهای dll هستند که عملیات شبکه مورد نیاز برای کلاینتها را انجام می دهند.using System;
using System.Data.SqlClient;
namespace ConnectIPAddressSqlServer
{
class Program
{
static void Main(string[] args)
{
string connectString =
"Network Library=dbmssocn;Network Address=127.0.0.1;" +
"Integrated security=SSPI;Initial Catalog=AdventureWorks";
using (SqlConnection connection = new SqlConnection(connectString))
{
connection.Open( );
// Return some information about the server.
Console.WriteLine(
"ConnectionState = {0}\nDataSource = {1}\nServerVersion = {2}",
connection.State, connection.DataSource,
connection.ServerVersion);
}
Console.WriteLine("\nPress any key to continue.");
Console.ReadKey( );
}
}
}
پروتکلها شبکه موجود برای Sql Server
• Shared Memoryبرای اطلاعات بیشتر در مورد پیکربندی پروتکلهای شبکه به Microsoft SQL Server Books Online مراجعه کنید
• TCP/IP
استفاده از پروتکل TCP/IP برای ارتباط• Named Pipes
SqlServer مکانیسم IPC را برای ارتباط بین کلاینت و سرور فراهم می کند.• VIA
پروتکل Virtual Interface Adapter که توسط سخت افزارهای VIA مورد استفاده قرار می گیرد. از SqlSever2005 به بعد دیگراین پروتکل پشتیبانی نمی شود.• AppleTalk ADSP
• Banyan VINES
• Multiprotocol
به صورت اتوماتیک از بین پروتکل های موجود یکی را انتخاب می کند که از لحاظ کارایی همانند استفاده از native network library می باشد.که از پروتکلهای TCP/IP Sockets, NWLink IPX/SPX, Named Pipes پشتیبانی می کند• NWLink IPX/SPX
پروتکل شبکه های ناول
استفاده از سوکتهای TCP/IP برای SQL Server عملکرد و مقیاس پذیری برنامه را بهبود می بخشد(در زمانی که با حجم بالایی از داده سرو کار داریم).این مکانیسم از بعضی از مسائل امنیتی مربوط به named pipes اجتناب می ورزد.
در صورت استفاده از هر پروتکلی , کلاینت و سرور با ید برای استفاده از TCP/IP پیکر بندی شوند.
SQL Server Configuration Manager/SQL Server Network Configuration/enabling TCP/IP in the Protocols subnode.
توجه کنید که Instanse پیش فرض SqlServer از پورت 1433 استفاده می کند.در صورتی که شما آنرا برای پورت دیگری پیکربندی کرده باشید Connection String را به صورت زیر تغییر دهید
Network Address=(local),1450منبع:http://gdevnb.blogfa.com
جهت کمک به فرآیند جستجو، بهتره عنوان پست به انگلیسی نیز نوشته شود :Get System Idle Time
struct LASTINPUTINFOمثالی از نحوه ی استفاده :
{
public uint cbSize;
public uint dwTime;
}
[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
public static uint GetIdleTime()
{
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeO f(lastInPut);
GetLastInputInfo(ref lastInPut);
return ((uint)Environment.TickCount - lastInPut.dwTime);
}
private Timer CheckIdleTimer;
private void Form1_Load(object sender, System.EventArgs e)
{
CheckIdleTimer = new Timer();
CheckIdleTimer.Interval = 1000;
CheckIdleTimer.Start();
CheckIdleTimer.Tick += new EventHandler(CheckIdleTimer_Tick);
}
private void CheckIdleTimer_Tick(object sender, System.EventArgs e)
{
this.Text = (GetIdleTime() / 1000).ToString();
}
با استفاده از : http://www.codeproject.com/KB/cs/GetIdleTimeWithCS.aspx
The Code Project Browser Add-in For VS 2005 And 2008
باز کردن کدهای سایت Code Project مستقیماً با ویژوال استدیو دات نت 2005 و 2008
توضیحات:
You can browse The Code Project normally using the add-in.
Once you click on a sample zip file link, the following will happen:
1. You will be prompted to open the project using the Code Project Browser.
If you say no here, then the browser will handle your request and can save the
zip file like you normally do. NOTE: You must be logged into the Website to
download files from The Code Project.
2. If you say yes, then the add-in will download the project and unzip it to
My Documents\My Code Project Samples\[name].
[name] is derived from the unique directory that the article and sample
reside in on The Code Project.
3. The add-in will inspect the new directory for any solutions, and if
one is found, it will load it directly. If no solution is found, it will look
for any project files, and if one or more are found, it will load the
first one directly.
4. An entry is created in the "Downloaded Projects" view for the new directory.
All solutions, projects and sample executables will be included under the new
project tree node
دانلود:http://www.codeproject.com/KB/macros/cpbrowser.aspx
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:38 عصر
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] colorNames;
colorNames = System.Enum.GetNames(typeof(KnownColor));
listBox1.Items.AddRange(colorNames);
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
KnownColor selectedColor;
selectedColor = (KnownColor)System.Enum.Parse(typeof(KnownColor), listBox1.Text);
this.BackColor = System.Drawing.Color.FromKnownColor(selectedColor) ;
}
}
منبع:pro.net2.0 windows forms and custom controls Apress
آخرین ویرایش به وسیله az_farzaneh : دوشنبه 26 فروردین 1387 در 12:41 عصر
برای اینکار دو روش ساده وجود داره
یکی از روش ها قبلا گفته شد که از حلقه استفاده میشد،
مشکلی که اون روش داشت این بود که خیلی خیلی زمانبر بود
اما با این روش در حداقل زمان اینکار انجام میشه.
using System.Drawing;
void New_file(PictureBox pb)
{
bmp_image = new Bitmap(pb.Width, pb.Height);
g = Graphics.FromImage(bmp_image);
g.FillRectangle(Brushes.White, newRectangle(0, 0, bmp_image.Width, bmp_image.Height));
pb.Image = bmp_image;
}
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:43 عصر
//define LinearGradientBrush with Init Prop
//
LinearGradientBrush lgBrush = new LinearGradientBrush(this.ClientRectangle,
Color.White, Color.Blue,130);
//
// Define ColorBlend
//
ColorBlend cb = new ColorBlend(5); // 5 is count of color which sets to Brush
cb.Colors = new Color[] {Color.Red,Color.Blue,Color.Gold,Color.Black,Color .Brown,Color.Lime };
//define the point of each color
//all the Points must be between 0 and 1
// 0 and 1 should be exist in point collection
cb.Positions = new float[] {0.0f,0.2f,0.4f,0.6f,0.8f,1f };
// assign colorBlend to gardientBrush
lgBrush.InterpolationColors = cb;
//draw shape and fill it eith gradientBrush
e.Graphics.FillRectangle(lgBrush, this.ClientRectangle);
توضیح :بعضی از دوستان نحوه استفاده از این کد را متوجه نشده اند. و با پیغام خصوصی سوال کردند که چگونه از این کد باید استفاده کرد.
هر کنترلی را که شما بتوانید شی گرافیکی اون را به دست آورید می تونید این کد را برای اون اعمال کنید..
البته همانطور که می دونین، بهترین مکان همیشه برای کار های گرافیکی رویداد Paint می باشد.
نکته دیگه اینکه اگر عکس کشیده شده، هنگام Resize کردن فرم یا کنترل مورد نظر دارای پرش و .. می باشد، به راحتی می توانید با متد SetStyle مشکل ان را حل کنید.موفق باشید
آخرین ویرایش به وسیله Mahdi.Kiani : سه شنبه 03 اردیبهشت 1387 در 11:25 صبح
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
این کلاس یکی دیگر از کلاس های کار با گرافیک است که در فضای نام System.Drawing.Drawing2D قرار گرفته است.
این کلاس از Enum ای به نام HatchStyle استفاده می کند تا استایل های از پیش تعریف شده ای را برای شما ترسیم کند.
HatchStyle دارای 57 نوع استایل مختلف می باشد که همگی آن ها همراه با نام آن ها در شکل Attach شده ترسیم شده اند.
توضیحات بیشتر را با دیدن عکس متوجه خواهید شد. اگر سایز عکس کوچک است، برنامه را دانلود کنید و از طریق برنامه مشاهده کنید.
کد برنامه ای که این عکس را ترسیم می کند :
//create a hBrush
System.Drawing.Drawing2D.HatchBrush hBrush = new HatchBrush((HatchStyle)(Enum.Parse(typeof(HatchSty le), senderItem.Tag.ToString(), true)), Color.Red, Color.Green);
//draw FillRectangle With hBrush on the Source Item
e.Graphics.FillRectangle(hBrush, senderItem.ClientRectangle);
//Calculate Size Of Text
SizeF textSize = e.Graphics.MeasureString(senderItem.Tag.ToString() .Trim(), this.Font);
int X_Loc = (int)(senderItem.Width - textSize.Width) / 2;
int Y_LOc = (int)(senderItem.Height - textSize.Height) / 2;
//Draw text
e.Graphics.DrawString(senderItem.Tag.ToString().Tr im(), this.Font, new SolidBrush(this.ForeColor), X_Loc, Y_LOc);
کد کامل را هم می توانید در پایان همین پست دانلود کنید.
موفق باشید
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:43 عصر
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
در لینکهای زیر میتوانید آموزشهای مورد نظر خودتون رو بصورت ویدیویی مشاهده و یا دانلود نمایید :
- http://asp.net/learn
- http://msdn2.microsoft.com/en-us/beginner/default.aspx
- http://msdn2.microsoft.com/en-us/beginner/bb308760.aspx
- http://msdn2.microsoft.com/en-us/express/aa700759.aspx
- http://windowsclient.net/learn
این لیست به مرور تکمیلتر خواهد شد.
Change Resulation
public static void ChangeResolution(int a, int b)
{
Screen screen = Screen.PrimaryScreen;
int iWidth = a;
int iHeight = b;
DEVMODE1 dm = new DEVMODE1();
dm.dmDeviceName = new String(new char[32]);
dm.dmFormName = new String(new char[32]);
dm.dmSize = (short)Marshal.SizeOf(dm);
if (0 != User_32.EnumDisplaySettings(null, User_32.ENUM_CURRENT_SETTINGS, ref dm))
{
dm.dmPelsWidth = iWidth;
dm.dmPelsHeight = iHeight;
int iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_TEST);
if (iRet == User_32.DISP_CHANGE_FAILED)
{
MessageBox.Show("Unable to process your request");
MessageBox.Show("Description: Unable To Process Your Request. Sorry For This Inconvenience.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_UPDATEREGISTRY);
switch (iRet)
{
case User_32.DISP_CHANGE_SUCCESSFUL:
{
break;
//successfull change
}
case User_32.DISP_CHANGE_RESTART:
{
MessageBox.Show("Description: You Need To Reboot For The Change To Happen.\n If You Feel Any Problem After Rebooting Your Machine\nThen Try To Change Resolution In Safe Mode.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
//windows 9x series you have to restart
}
default:
{
MessageBox.Show("Description: Failed To Change The Resolution.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
//failed to change
}
}
}
}
}
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:44 عصر
روشهای اتصال به بانکهای اوراکل :
Oracle .NET data provider
OLE DB .NET data provider
ODBC .NET data provider
در مثال زیر به تمام راههای بالا اشاره شده است.
using System;
using System.Data.OracleClient;
using System.Data.OleDb;
using System.Data.Odbc;
namespace ConnectOracle
{
class Program Interprocess communication (IPC)
{
static void Main(string[] args)
{
// Connect using .NET data provider for Oracle
string oracleConnectString =
"Data Source=ORCL;User Id=hr;Password=password;";
using (OracleConnection connection =
new OracleConnection(oracleConnectString))
{
connection.Open( );
// Return some information about the server.
Console.WriteLine("---Microsoft .NET Provider for Oracle---");
Console.WriteLine("ConnectionString = {0}\n", oracleConnectString);
Console.WriteLine("State = {0}", connection.State);
Console.WriteLine("DataSource = {0}", connection.DataSource);
Console.WriteLine("ServerVersion = {0}", connection.ServerVersion);
}
// Connect using .NET data provider for OLE DB.
string oledbConnectString =
"Provider=MSDAORA;Data Source=ORCL;User Id=hr;Password=password;";
using (OleDbConnection connection =
new OleDbConnection(oledbConnectString))
{
connection.Open( );
// Return some information about the server.
Console.WriteLine("\n---Microsoft .NET Provider for OLE DB---");
Console.WriteLine("ConnectionString = {0}\n", oledbConnectString);
Console.WriteLine("State = {0}", connection.State);
Console.WriteLine("DataSource = {0}", connection.DataSource);
Console.WriteLine("ServerVersion = {0}", connection.ServerVersion);
}
// Connect using .NET data provider for ODBC
string odbcConnectString = "Driver={Oracle in OraDb10g_home1};" +
"Server=ORCL;uid=hr;pwd=password;";
using (OdbcConnection connection =
new OdbcConnection(odbcConnectString))
{
connection.Open( );
// Return some information about the server.
Console.WriteLine("\n---Microsoft .NET Provider for ODBC---");
Console.WriteLine("ConnectionString = {0}\n", odbcConnectString);
Console.WriteLine("State = {0}", connection.State);
Console.WriteLine("DataSource = {0}", connection.DataSource);
Console.WriteLine("ServerVersion = {0}", connection.ServerVersion);
}
Console.WriteLine("\nPress any key to continue.");
Console.ReadKey( );
}
}
}
روش اول Oracle .NET data provider یا همان Native Oracle:
Oracle .NET data provider با استفاده از OCI(Oracle Call Inteface) و از طریق ابزارهای ارتباطی برای کلاینت (Oracle client connectivity software) به بانکهای اطلاعاتی اوراکل دسترسی دارد.این پروایدر به اوراکل 7.3.4 (یا ورژنهای بالاتر) می تواند دسترسی داشته باشد ,همچنین به Oracle 8i Release 3 (8.1.7) client software (یا ورژنهای بالاتر) نیازدارد.تمام کلاسهای مورد نیاز در فضای نام System.Data.OracleClient قرار دارد
مثالی از رشته اتصال که از Integrated Security استفاده کرده است
Data Source=ORCL;Integrated Security=yes;
و بدون استفاده از Integrated Security
Data Source=ORCL;User Id=hr;Password=password;
معمولاً روش Native بهتر از دو روش دیگر است .چون این این روش مخصوص این نوع بانک اطلاعاتی است و برای آن بهینه شده است(تمام لایه های غیر مرتبط با این نوع دیتا حذف شده است)
روش دوم OLE DB:
در این روش برای دسترسی به بانکهای اطلاعاتی اوراکل از Oracle OLE DB provider (MSDAORA) استفاده می کنیم.
Provider=MSDAORA;Data Source=myOracleDb;User Id=hr;Password=password;
معمولاً از این روش برای ایجاد یک پل ارتباطی با برنامه ای که از OLE DB استفاده می کند , بکار می رود.
روش سوم OLE DB:
و در پایان با استفاده از ODBC .NET data provider نیز می توان به بانکهای اوراکل متصل شد . به عنوان مثال رشته اتصال به بانک اطلاعاتی در Oracle 10g به صورت زیر است.
"Driver={Oracle in OraDb10g_home1};Server=ORCL;uid=hr;pwd=password;";
از این روش نیز برای ایجاد یک پل ارتباطی با برنامه ای که از ODBC استفاده می کند , بکار می رود.
بنابراین در صورت امکان برای اتصال به این بانکها از روش Native استفاده کنید.
نکته:اوراکل از یک فایل پیکر بندی(با نام TNSNAMES.ORA در محل بانک اطلاعاتی)برای تعیین نحوه ارتباط با آن استفاده می کند.
مثالی از محتویات این فایل برای alias ORCL :
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
که این اتصال به طور پیش فرض از ارتباط TCP/IP با پورت 1521 صورت می گیرد.
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 15:46 عصر
این قطعه کد رو داخل همین بخش دیدم و خاطرم نیست کی زحمتش رو کشیده بود
در صورتیکه مقدار بازگردانده شده از این تابع IsConnectedToInternet برابر true باشد ، سیستم به اینترنت متصل است
using System.Runtime.InteropServices;
//بررسی اتصال به اینترنت
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
//Creating a function that uses the API function...
bool IsConnectedToInternet()
{
bool a;
int Desc;
a=InternetGetConnectedState(out Desc, 0);
return a;
}
این تیکه کد نیاز به دو DataGrid دارد و از متد SetDataBinding برای پر کردن DataGrid ها استفاده میکند
DataRelation myDataRelation;
myDataRelation = new DataRelation("CustOrd", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]);
// Add the relation to the DataSet.
ds.Relations.Add(myDataRelation);
GridOrders.SetDataBinding(ds,"Customers");
GridDetails.SetDataBinding(ds,"Customers.CustOrd") ;
http://msdn2.microsoft.com/en-us/lib...28(VS.71).aspx
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true,CallingConvention=CallingConven tion.Winapi)]
public static extern short GetKeyState(int keyCode);
bool isCapsLock = (((ushort) GetKeyState(0x14 /*VK_CAPITAL*/)) & 0xffff) != 0;
bool isNumLock = (((ushort) GetKeyState(0x90 /*VK_NUMLOCK*/)) & 0xffff) != 0;
How to record voice from microphone?
using Microsoft.VisualBasic.Devices;
using Microsoft.VisualBasic;
using System.Runtime.InteropServices;
تابع API زير را به كلاس برنامه بيافزاييد :
[DllImport("winmm.dll", EntryPoint = "mciSendStringA",
CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int mciSendString(string lpstrCommand,
string lpstrReturnString, int uReturnLength, int hwndCallback);
3 دكمه با نامهاي زير بسازيد :
در زمان كليك شدن دكمه Record بنويسيد :
- Record
- SaveStop
- Read
// record from microphone
mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);
و هنگام كليك شدن دكمه SaveStop
// stop and save
mciSendString("save recsound c:\\record.wav", "", 0, 0);
mciSendString("close recsound ", "", 0, 0);
Computer c = new Computer();
c.Audio.Stop();
و براي دكمه Read نيز :
Computer computer = new Computer();
computer.Audio.Play("c:\\record.wav", AudioPlayMode.Background);
منبع : http://www.dotnetspider.com/resource...icrophone.aspx