سلام
مشکل من اینکه نمیتونم MouseEventArgs را به تابع MouseHover اضافه کنم
این کد را هم نوشتم اما درست نشد
PHP:protected override void OnMouseHover(object sender, EventArgs e) { Console.WriteLine("OnMouseHover"); }
private void MyEvent(object sender, EventArgs e)
{
MessageBox.Show("OnMouseHover");
}
this.MouseHover += new EventHandler(MyEvent);
button1.MouseHover += new EventHandler(MyEvent);
سلام
ممنون از جواب شما
من راستش چند تا لیبل دارم تو فرم ام حالا میخوام با کلیک کردن و کشیدن اونهایی که موس از روی انها کشیده میشه همراه با کلیک
رنگش تغییر کننه
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctl in this.Controls)
{
if (ctl.GetType().Equals(typeof(Label)))
{
ctl.MouseEnter += new EventHandler(OnMouseEnter);
ctl.MouseLeave += new EventHandler(OnMouseLeave);
}
}
}
void OnMouseEnter(object sender, EventArgs e)
{
Control label = (Label)sender;
label.ForeColor = Color.Red;
label.Font = new Font(label.Font, FontStyle.Bold | FontStyle.Underline);
}
void OnMouseLeave(object sender, EventArgs e)
{
Control label = (Label)sender;
label.ForeColor = Color.Black;
label.Font = new Font(label.Font, FontStyle.Regular);
}
private void label1_MouseEnter(object sender, MouseEventArgs e)
{
}
ممنون من این کارو کردم اما نمیتونم کنترل بر روی کلیک داشته باشم
مثلا در تابع OnMouseEnter که شما ساختید
میشه یک شرط هم اضافه کنید مبنی بر اینکه کلید چپ موس درحال فشرده شدن است یا نه
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctl in this.Controls)
{
if (ctl.GetType().Equals(typeof(Label)))
{
ctl.MouseEnter += new EventHandler(OnMouseEnter);
ctl.MouseLeave += new EventHandler(OnMouseLeave);
ctl.MouseDown += new MouseEventHandler(OnMouseDown);
ctl.MouseUp += new MouseEventHandler(OnMouseUp);
ctl.MouseClick += new MouseEventHandler(OnMouseClick);
}
}
}
void OnMouseDown(object sender, MouseEventArgs e)
{
Control label = (Label)sender;
label.ForeColor = Color.OrangeRed;
label.Font = new Font(label.Font, FontStyle.Bold | FontStyle.Underline | FontStyle.Italic);
}
void OnMouseUp(object sender, MouseEventArgs e)
{
Control label = (Label)sender;
label.ForeColor = Color.Red;
label.Font = new Font(label.Font, FontStyle.Bold | FontStyle.Underline);
}
void OnMouseClick(object sender, MouseEventArgs e)
{
Control label = (Label)sender;
label.Text += "*";
}
void OnMouseEnter(object sender, EventArgs e)
{
Control label = (Label)sender;
label.ForeColor = Color.Red;
label.Font = new Font(label.Font, FontStyle.Bold | FontStyle.Underline);
}
void OnMouseLeave(object sender, EventArgs e)
{
Control label = (Label)sender;
label.ForeColor = Color.Black;
label.Font = new Font(label.Font, FontStyle.Regular);
}
ممنون از جواب شما
اما مشکل من این نبود مشکل من
مشکل من ایت است که MouseEnter چیزی به نام MouseEventArgs ندارهPHP:private void[B] label1_MouseEnter[/B](object sender,[B] MouseEventArgs[/B] e) { if(e.Button==StyleButton.Left) //شرط من }
فرم من به این شکل استکلید ماوس فشرده می شود آن پنجره ماوس رو Capture می کند و تا زمانی که Release نشده
رخداد های ماوس در هیچ پنجره دیگری فعال نیست.
void OnMouseEnter(object sender, EventArgs e)
{
if (tf)
if (!EasMenu.Checked)
{
((Label)sender).BackColor = Color.Black;
}
else
{
((Label)sender).BackColor = Color.White;
}
}
private void OnMouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
tf = true;
}
private void OnMouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
tf = false;
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int ReleaseCapture();
[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]
private static extern short GetKeyState(int keyCode);
private static bool GetKeyState(Keys key)
{
short state = GetKeyState((int)key);
return ((state & 0x8000) == 0x8000);
}
[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]
private static extern short GetKeyState(int keyCode);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int ReleaseCapture();
private static bool GetKeyState(Keys key)
{
short state = GetKeyState((int)key);
return ((state & 0x8000) == 0x8000);
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctl in this.Controls)
{
if (ctl.GetType().Equals(typeof(Label)))
{
ctl.MouseEnter += new EventHandler(OnMouseEnter);
ctl.MouseDown += new MouseEventHandler(OnMouseDown);
}
}
this.MouseDown += new MouseEventHandler(OnFormMouseDown);
}
void OnFormMouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
}
void OnMouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
OnMouseEnter(sender, e);
}
void OnMouseEnter(object sender, EventArgs e)
{
Control label = (Label)sender;
if (GetKeyState(Keys.LButton))
{
label.BackColor = Color.Black;
}
if (GetKeyState(Keys.RButton))
{
label.BackColor = Color.White;
}
}