صفحه 7 از 14 اولاول ... 56789 ... آخرآخر
نمایش نتایج 241 تا 280 از 533

نام تاپیک: 1001 نکته در سی شارپ

  1. #241
    VIP آواتار raravaice
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Tehran
    سن
    40
    پست
    1,944

    فراخوانی یک رویداد از رویداد دیگر


    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);
    }

  2. #242

    ترسیم یک نوشته در مرکز یک کنترل

    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)
    {
    DrawCenterString(sender, e);
    }
    منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 14:03 عصر

  3. #243

    بهبود رسم شکلها با روانسازی منحنیها و زاویه ها

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
    // حالت معمولی
    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);
    }
    منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 14:04 عصر

  4. #244

    رسم یک Button (در حالتهای مختلف) به کمک +GDI

    private void DrawButton(Graphics g, ref Rectangle rc, ButtonState state)
    {
    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);
    }
    منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
    عکس های ضمیمه عکس های ضمیمه

  5. #245

    ترسیم برخی دکمه های ویژه به کمک +GDI

    private void DrawCaptionButton(Graphics g, ref Rectangle rc,
    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);
    }
    منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604
    عکس های ضمیمه عکس های ضمیمه

  6. #246

    ترسیم انواع چک باکس ها به کمک +GDI

    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
    عکس های ضمیمه عکس های ضمیمه

  7. #247

    ترسیم انواع border های 3 بعدی به کمک +GDI

    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
    عکس های ضمیمه عکس های ضمیمه

  8. #248

    تضمین آنکه چطور همیشه پس از اتمام کار با یک آبجکت حتما از حافظه خارج (dispose) شود

    عادت کنید که همیشه از using استفاده کنید.
    برای مثال :
    using (FileStream FS = new FileStream("Test.txt", FileMode.Create))
    {
    FS.WriteByte((byte)1);
    FS.WriteByte((byte)2);
    FS.WriteByte((byte)3);
    using (StreamWriter SW = new StreamWriter(FS))
    {
    SW.WriteLine("some text.");
    }
    }
    که اگر بخواهید مثال بالا را به بدون استفاده از using پیاده سازی کنید باید چیزی شبیه به تیکه کد زیر بنویسید :
    FileStream FS = new FileStream("Test.txt", FileMode.Create);
    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();
    }
    }
    همینطور که میبینید استفاده از using کد شما را راحتتر، خواناتر و کوتاه تر میکند.

    منبع : "C#‎ 3.0 Cookbook™, Third Edition"

  9. #249

    معرفی کلاسی با سه متود برای جستجو در EventLog

    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"

  10. #250

    تبدیل درجه حرارتها به یکدیگر (سلسیوس، فارنهایت، کلوین)

    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"

  11. #251

    Arrow آموزش کار کردن با BackgroundWorker بصورت آسان و قدم به قدم

    این آموزش همراه با یک مثال انجام میشود.
    (توجه : در بهینه نبودن این مثال شک نداشته باشید چون فی البداهه و صرف آموزش نوشته شده است)

    مثال - میخواهیم تمامی فایلهای موجود در پوشه ی ویندوز را توسط یک thread پشت زمینه (مستقل از UI Thread) در یک لیست باکس نمایش دهیم.

    بلافاصله و بدون مقدمه؛ ابتدا یک آبجکت از نوع BackgroundWorker بسازید و در زمان کلیک شدن یک دکمه مقادیر آن را به شکل زیر تغییر دهید :
    BackgroundWorker worker = new BackgroundWorker();

    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"));
    }
    خط آبی شده حاکی از آن است که worker میتواند در زمان اجرا میزان پیشرفت خود را گزارش کند(که باعث توانایی کار کردن با عناصر UI بصورت مستقیم و بدون استفاده از delegate میشود)
    سپس ایونت هندلرها رو تخصیص داده
    و در خط آخر نیز دستور اجرای آسنکرون اون رو با یک پارامتر ورودی را صادر کردیم.

    کار زمانبری که میخواهیم در پشت زمینه انجام شود را در رویداد DoWork مینویسیم و این همان رویدادی ست که با دستور worker.RunWorkerAsync در تیکه کد قبلی تحریک میشود :
    void worker_DoWork(object sender, DoWorkEventArgs e)
    {
    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);
    }
    }
    }
    همانطور که مشاهده کردید در خط اول متود بالا پارامتر ورودی را در قالب یک DirectoryInfo در آوردیم که بتوانیم از آن استفاده کنیم.
    و به ازای هر فایل شناخته شده (البته در عمل : بهتر است اینکار مثلا به ازای هر 100 فایل پیدا شده انجام شود) یک گزارش از میزان پیشرفت همراه با پارامترهای شماره فایل و نام آن میفرستیم.
    و در نهایت برای منعکس کردن پیشرفتهای لحظه ای و اختصاص آنها به لیست باکس مینویسیم:
    void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
    listBox1.Items.Add(e.ProgressPercentage.ToString() + " : " + e.UserState.ToString());
    }
    توجه کنید که در کد بالا مقدار e.UserState همان آبجکتی است که در زمان DoWork ارسال کردید.
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 14:05 عصر

  12. #252

    Arrow ترسیم و نوشتن مستقیم بر دسکتاپ ویندوز

    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 در 14:09 عصر

  13. #253

    Thumbs up آموزش ساخت یک user control برای login و پیاده سازی ایونتهای مرتبط

    در تاپیک زیر بحثهایی درمورد ساخت یوزرکنترل و ایجاد رویدادهایی برای آن انجام گرفت و دو پروژه نمونه نیز آپلود گردید :

    https://barnamenevis.org/showthread.php?t=94791
    https://barnamenevis.org/showpost.php?p=466653
    https://barnamenevis.org/showpost.php?p=466715

  14. #254

    Lightbulb آشنایی با الگوهای طراحی : Decorator Pattern

    Decorator Pattern



    این pattern در طبقه بندی الگوهای ساختاری جای دارد و امکان افزودن قابلیتها و تزیینات جدید به یک آبجکت را بصورت داینامیک و در زمان اجرا ممکن میکند.
    این امکان بوسیله ی افزودن یک کلاس جدید (decorator) ممکن میشود که کلاس اصلی را wrap میکند. این wrapping معمولا با پاس دادن آبجکت اصلی بعنوان یک پارامتر به constructor decorator انجام میشود.

    Decorator قابلیتهای جدید را در آبجکت پیاده سازی میکند و باید همان اینترفیسی را که کلاس اصلی پیاده سازی میکند، پیاده سازی کند.
    در زمان اجرا میتوان به یک آبجکت هم decorator افزود و هم کاست بدون آنکه مصرف کننده متوجه تغییرات گردد.

    Decorating در واقع بعنوان روش جایگزین subclassing (با انعطاف بیشتر) جهت توسعه قابلیتهاست با این تفاوت که :
    1. Subclassing رفتارهای جدیدی را در زمان کامپایل(compile-time) اضافه میکند در حالیکه decorating میتونه رفتارهای جدیدی را در زمان اجرا(runtime) اضافه نماید.
    2. با 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 در 20:59 عصر

  15. #255

    آشنایی با الگوهای طراحی : Singleton Pattern

    Singleton Pattern



    هدف : میخواهیم تضمین کنیم که از یک کلاس تنها بتوان یک آبجکت (حالت ساده و متعارف سینگلتون) ایجاد کرد و همه ی درخواستها نیز تنها به همان یک آبجکت هدایت شوند و نیز بتوان یک دسترسی عمومی به آن داشت.

    اولین قدم : سازنده ی کلاس را private میکنیم
    چرا private ؟ - پاسخ : تا هیچکسی نتواند از کلاس آبجکت بسازد.

    دومین قدم : یک فیلد استاتیک از نوع خود کلاس تعریف میکنیم.
    چرا استاتیک : چون قرار است در یک متود استاتیک از آن استفاده کنیم.
    چرا private : چون قرار است امکان دسترسی به این آبجکت از طریق یک متود یا پراپرتی صورت گیرد و دسترسی مستقیم مطلوب نیست.

    سومین قدم : ایجاد یک پراپرتی یا متود public و استاتیک که فیلد را برمیگرداند.
    چرا public ؟ چون میخواهیم از همه جا قابل دسترسی باشد.
    چرا استاتیک ؟ چون آبجکتی از کلاس ندارم و ناچارا باید دسترسی به این متود یا پراپرتی در سطح کلاس باشد.

    پس تا اینجا داریم :
    public sealed class Singleton
    {
    // 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; }
    }
    }
    معمولا بهتر است این پیاده سازی بصورت lazy instantiation باشد (یعنی تا قبل از اولین invoking آبجکت مقداردهی اولیه نشود) :
    public class Singleton
    {
    // 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; }
    }
    }
    این الگو به شدت در طراحیهای مختلف و الگوهای دیگر (مانند : Abstract Factory, Façade , ...) مورد استفاده دارد.

    ____________________________
    کدها از کتاب : http://www.oreilly.com/catalog/9780596527730

    منابع :
    http://en.wikipedia.org/wiki/Singleton_pattern
    http://www.dofactory.com/Patterns/PatternSingleton.aspx

  16. #256

    تبدیل اتوماتیک دکمه Enter به Tab جهت انتقال فوکوس در کنترلها

    - این پست جابجا شد -

    این کد را در کلاس مربوط به کنترل 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}");
    }

  17. #257

    Cool تعدادی کد اعتبارسنجی(Validation) برای TextBox

    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 برای فقط حروف بزرگ

    private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    if ( !( char.IsUpper( e.KeyChar ) || char.IsControl( e.KeyChar )) )
    {
    e.Handled = true;
    }
    }
    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های خالی (می‌توانید کلیه 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;
    }
    TextBox اعشاری(با علامت اعشار مربوط به هر منطقه)

    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 در 14:23 عصر

  18. #258

    Lightbulb ساختن Connection String به روشی بسیار ساده

    برای ساخت یک Connection String بدون نیاز به Visual Studio ، به روش زیر عمل می‌کنیم:
    1. یک فایل جدید ایجاد کرده و پسوند آنرا به "udl" تغییر می‌دهیم. (مثلا یک فایل متنی که می شود New Text file.udl)
    2. می‌بینید که آیکون آن تغییر کرد
    3. آنرا باز کنید. پنجره مشخصات Data Link باز می‌شود
    4. برای ایجاد Connection String برای SQL گزینه Microsoft OLE DB Provider For SQL Server را از لبه Provider انتخاب کنید
    5. دکمه Next را زده و یا به لبه Connection بروید
    6. از این قسمت تمامی مشخصه‌های ارتباط را می‌توانید تعیین کنید
    7. بعد از مشخص کردن تمامی پارامتر‌های مورد نیاز دکمه Test Connection را برای اطمینان از درستی آن بزنید. اگر همه چیز درست است پنجرا را ببندید
    8. حال فایلی که ابتدا ایجاد کردید را با Notepad باز کنید.
    ‍Connection String درون فایل ایجاد شده است.(البته این ارتباط برای OLE DB است که می توانید این قسمت را حذف کنید)
    اگر از User و Password استفاده می‌کنید، تیک Allow Saving Password را بزنید تا پسورد در فایل ذخیره شود.
    منبع : CodeProject
    آخرین ویرایش به وسیله razavi_university : پنج شنبه 15 فروردین 1387 در 12:58 عصر دلیل: باز یادم رفت امضام رو بردارم

  19. #259

    Cool اطلاعاتی در مورد موس

    شاید نیاز داشته باشید بفهمید کاربر از موس استفاده می‌کند یا نه؛ و در صورتی که استفاده می‌کند اطلاعاتی از موس(تعداد دکمه، Wheel)
    این اطلاعات و یا سایر اطلاعاتی را که از سیستم کاربر می‌خواهید می‌توانید در کلاس Enviroment بیابید.

    SystemInformation.MousePresent.ToString()
    SystemInformation.MouseButtons.ToString()
    SystemInformation.MouseButtonsSwapped.ToString()
    SystemInformation.MouseWheelPresent.ToString()
    آخرین ویرایش به وسیله razavi_university : شنبه 17 فروردین 1387 در 12:11 عصر دلیل: (به سفارش مدیر ;) )

  20. #260
    کاربر دائمی آواتار tthenry14plus
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    Tehran
    پست
    218

    کشیدن لایه شفاف با رنگ دلخواه بر روی عکس

    یادمه که قبلا یکی از دوستان دنبال روشی برای اینکار می گشت
    برای اینکار حدود 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 در 14:25 عصر دلیل: تکمیل پست

  21. #261

    Lightbulb تخصیص آیکن سفارشی به کامپوننتهای درون تولباکس

    برای افزودن آیکن مورد نظر خود به یک کامپوننت کافیست که موارد زیر را رعایت کنید :
    • فایل تصویر باید از نوع 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))]
    If 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.
    منبع کتاب : http://www.amazon.com/Pro-ASP-NET-3-.../dp/1590598938
    آخرین ویرایش به وسیله sinpin : یک شنبه 18 فروردین 1387 در 05:50 صبح

  22. #262
    کاربر دائمی آواتار danial82
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    iran_tehran
    پست
    531

    Cool محاسبه زمان اجرای قسمتی برنامه

    از کلاس 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 کاربر همین سایت

  23. #263
    کاربر دائمی آواتار danial82
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    iran_tehran
    پست
    531

    طریقه استفاده از کامژوننت timer


    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 در 14:25 عصر

  24. #264

    سایه دار کردن یک فرم

    چطور میتوان یک فرم رو سایه دار کرد ؟

    کد زیر را در فرم مورد نظر بنویسید :
    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
    عکس های ضمیمه عکس های ضمیمه

  25. #265

    Lightbulb غیر قابل کامپایل کردن بخشی از یک پروژه بصورت موقت

    گاهی لازمه شما بخشی از یک پروژه و یا فایلهایی از آن را موقتا غیرقابل کامپایل کنید.
    یک مثال - میخواهید بخشی از یک برنامه رو تست کنید اما کلاسی را که جدیدا نوشتید دارای خطای زمان کامپایل است و اجازه ی اجرا شدن برنامه را نمیدهد و گاهی لزومی نداره که ابتدا اون کلاس رو کاملا رفع مشکل کنید تا بعد بتونید برنامه رو تست کنید.

    برای غیرقابل کامپایل کردن بخشی از یک پروژه :
    روی آن فایل یا فولدر مورد نظر کلیک راست کرده و گزینه ی Exclude From Project را انتخاب کنید.

    راه دیگر اینستکه :
    پسوند فایلهایی را که میخواهید موقتا کامپایل نشوند را به چیزی غیر از cs (برای مثال : cs.bak) تغییر دهید.

  26. #266
    کاربر دائمی آواتار tthenry14plus
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    Tehran
    پست
    218

    برنامه ای مشابه ColorBalance فوتوشاپ

    برنامه ای که مشابه 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 در 14:26 عصر دلیل: برداشتن امضا

  27. #267

    اتصال به SqlServer با استفاده از IP Address

    اتصال به SqlServer با استفاده از IP Address

    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 network libraries فایلهای dll هستند که عملیات شبکه مورد نیاز برای کلاینتها را انجام می دهند.
    پروتکلها شبکه موجود برای Sql Server
    • Shared Memory
    • 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
    پروتکل شبکه های ناول
    برای اطلاعات بیشتر در مورد پیکربندی پروتکلهای شبکه به Microsoft SQL Server Books Online مراجعه کنید
    استفاده از سوکتهای 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

  28. #268

    بدست آوردن مدت زمان بیکاری سیستم

    جهت کمک به فرآیند جستجو، بهتره عنوان پست به انگلیسی نیز نوشته شود :

    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

  29. #269

    The Code Project Browser Add-in For VS 2005 And 2008

    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 در 14:38 عصر

  30. #270

    پر کردن یک listbox از رنگهای سیستمی

    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 در 11:41 صبح

  31. #271
    کاربر دائمی آواتار tthenry14plus
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    Tehran
    پست
    218

    ایجاد تصویر Bitmap در زمان اجرا (روش دوم)

    برای اینکار دو روش ساده وجود داره
    یکی از روش ها قبلا گفته شد که از حلقه استفاده میشد،
    مشکلی که اون روش داشت این بود که خیلی خیلی زمانبر بود
    اما با این روش در حداقل زمان اینکار انجام میشه.


    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 در 14:43 عصر

  32. #272

    ایجاد طیف رنگ با بیش از دو رنگ توسط ColorBlend



    //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 در 10:25 صبح

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


  33. #273

    کلاس hatchBrush

    این کلاس یکی دیگر از کلاس های کار با گرافیک است که در فضای نام 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 در 14:43 عصر

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


  34. #274

    Lightbulb معرفی چند لینک برای دریافت آموزشهای ویدئویی

    در لینکهای زیر میتوانید آموزشهای مورد نظر خودتون رو بصورت ویدیویی مشاهده و یا دانلود نمایید :

    این لیست به مرور تکمیلتر خواهد شد.

  35. #275

    تغییر دادن میزان تفکیک پذیری (Resulation) صفحه نمایش

    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 در 14:44 عصر

  36. #276

    اتصال به بانکهای اطلاعاتی اوراکل در سی شارپ

    روشهای اتصال به بانکهای اوراکل :
    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 در 14:46 عصر

  37. #277
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    کرمان-کرمان
    پست
    334

    بررسی اتصال به اینترنت Dial up و ADSL

    این قطعه کد رو داخل همین بخش دیدم و خاطرم نیست کی زحمتش رو کشیده بود
    در صورتیکه مقدار بازگردانده شده از این تابع 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;
    }

  38. #278
    کاربر دائمی آواتار danial82
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    iran_tehran
    پست
    531

    پر کردن دو DataGrid به صورت master detail

    این تیکه کد نیاز به دو 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

  39. #279

    تشخیص روشن بودن Caps Lock و Num Lock


    [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;

  40. #280

    ضبط (ركورد) صدا از طريق ميكروفون

    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
    • SaveStop
    • Read
    در زمان كليك شدن دكمه Record بنويسيد :
    // 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

صفحه 7 از 14 اولاول ... 56789 ... آخرآخر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •