کار با رویدادها برای تغییر رنگ یک ابزار در سی شارپ

00980663

New Member
کمک از سی شارپ کاران عزیز

با سلام خدمت دوستان عزیز
من تازه سی شارپ رو یاد گرفتم و می خوام یه برنامه ساده بنویسم . از شما دوستان خواهش می کنم منو راهنمایی کنید .
چند تا مشکل اولیه دارم که به شرح زیر هستند .

1-می خوام دو تا روال عمومی داشته باشم که هر شی ای مثلاً textbox فعال میشه به صورت خودکار رنگ اونا عوض بشه به یه رنگ خاص مثلاً زرد . یکیشون رو نوشتم به این صورت که در متد enter از fucos هر شی روالی به شکل زیر را فراخوانی می کند و درست هم کار می کند .
public void BackColorChange() {this.ActiveControl.BackColor = SystemColors.ControlDark;}
همین کار رو برای موقعی که شی غیر فعال میشه باید انجام بدم ولی نمی دونم در چه متدی (برای برگرداندن رنگ شی به حالت اولیه) . مثلاً در متد leave می نویسم ولی کنترل بعدی را تحت تأثیر قرار می ده . لطفاً بگین از چه راهی یا چه متدی استفاده کنم .

2- یه روال عمومی می خوام که در اطلاع های عددی فقط عدد وارد بشه و اگر کلید های enter یا tab زده شد به کنترل بعدی بره .

3- یه روال می خوام که اگر کلید راست ماوس روی یک اطلاع زده شد هیچ اتفاقی نیفته یعنی بی تأثیر باشه .

4- و اما مهمترین سئوال .... ارتباط سی شارپ با اکسس ... لطفاً اگه مقدورهست قدم به قدم و با جزئیات بفرمایید .
قبلاً از همکاریتون متشکرم ...
 

the_king

مدیرکل انجمن
1-می خوام دو تا روال عمومی داشته باشم که هر شی ای مثلاً textbox فعال میشه به صورت خودکار رنگ اونا عوض بشه به یه رنگ خاص مثلاً زرد . یکیشون رو نوشتم به این صورت که در متد enter از fucos هر شی روالی به شکل زیر را فراخوانی می کند و درست هم کار می کند .
public void BackColorChange() {this.ActiveControl.BackColor = SystemColors.ControlDark;}
همین کار رو برای موقعی که شی غیر فعال میشه باید انجام بدم ولی نمی دونم در چه متدی (برای برگرداندن رنگ شی به حالت اولیه) . مثلاً در متد leave می نویسم ولی کنترل بعدی را تحت تأثیر قرار می ده . لطفاً بگین از چه راهی یا چه متدی استفاده کنم .

وقت تون رو برای اضافه کردن دونه دونه روتین اجرای تابع در هر کدام از رویداد ها تلف نکنید. کد زیر تنها به یک کنترل تایمر timer1
نیازمند است. تنها کافیست برای رویداد timer1_Tick کد نویسی کنید. همان Interval با مقدار پیشفرض 100 کافیست،
صرفا فراموش نکنید که Enabled را برای timer1 برابر true قرار داده باشید.

هر چند تا که TextBox روی فرم اضافه کنید باز هم درست کار خواهد کرد :

کد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void [B]timer1_Tick[/B](object sender, EventArgs e)
        {
            Control ctl;
            for (int index = 0; index < this.Controls.Count; index++)
            {
                ctl = this.Controls[index];
                if (ctl.GetType().ToString() == "System.Windows.Forms.TextBox")
                {
                    if (ctl == this.ActiveControl)
                    {
                        if (ctl.BackColor == SystemColors.Window)
                            ctl.BackColor = SystemColors.ControlDark;
                    }
                    else
                    {
                        if (ctl.BackColor == SystemColors.ControlDark )
                            ctl.BackColor = SystemColors.Window ;
                    }
                }
            }
        }
    }
}

در ضمن همیشه سوالاتتان را در گفتگو های جداگانه بپرسید.
 

00980663

New Member
تشکر از شما و یک خواهش

از شما دوست عزیز به خاطر راهنماییتون متشکرم
 

00980663

New Member
تشکر از شما و یک خواهش

از شما دوست عزیز به خاطر راهنماییتون متشکرم

اگه ممکنه جواب سوال های دیگه مخصوصاً سئوال آخر رو بدبد ممنون میشم .

انشاءاله جبران کنیم .
 

saalek110

Well-Known Member
عنوان تاپیک باید شامل دو چیز باشد. اول بیانگر دقیق محتوای تاپیک باشد. یعنی به طور خاص و دقیق موضوع تاپیک را بیان کند. و دوم زبان برنامه نویسی مورد استفاده.

مورد اول را شما رعایت نکرده اید. عنوان تاپیک شما این بود: (( کمک از سی شارپ کاران عزیز )). من تغییر دادم.

دوما:
چند موضوع را در یک تاپیک مطرح نکنید.
 

جدیدترین ارسال ها

بالا