I'm using WinForms. Inside my WinForms application I have a contextMenuStrip
if you rightclick on the picturebox, contextMenuStrip will appear with a list of items you can click on. How do i call the "sizeMEToolStripMenuItem_Click" method into another method.
example:
private void sizeMEToolStripMenuItem_Click(object sender, EventArgs e)
{
if(sizeMEToolStripMenuItem.isclicked) //.isClicked is somthing i made up
{
e.Graphics.DrawImage(pictureBox1.Image, movingPoint); <- This draws and shows image
}
else
{
//e.Graphics.DrawImage(pictureBox1.Image, movingPoint); <- Hide this image
}
}
private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
{
//e.Graphics.DrawImage(pictureBox1.Image, movingPoint);
}
You can simply hanlde click event of that Item and put your codes in the Click event handler.
Open designer, select your context menu, select sizeMEToolStripMenuItem and double click on it. This way when you click on sizeMEToolStripMenuItem this method runs.
You can also set CheckOnClick property of sizeMEToolStripMenuItem to true and check value of Checked propery.
private void sizeMEToolStripMenuItem_Click(object sender, EventArgs e)
{
if( sizeMEToolStripMenuItem.Checked )
{
//Do what you need, for example:
//MessageBox.Show("checked");
//To force paint event trigger you can uncomment next line:
//pictureBox1.Invalidate();
}
}
To force paint event trigger, call this method in click event:
pictureBox1.Invalidate();
In paint event if you need to check if the item has been clicked, check value of Checked:
private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
{
if( sizeMEToolStripMenuItem.Checked )
{
//Do somethings
}
}
You can also set Checked property value in code.
Related
i need to hide a ListBox when I focus out a textbox. if i click on a different control or use Tab key then the textbox's "Leave" event occurs. But if I click inside the form, on any free space, then focusout doesn't happen. i saw something called mouse capture but i cant implement it.
i tried this:
private void txtProduct_Enter(object sender, EventArgs e)
{
listProduct.Show();
UIElement el = (UIElement)sender;
el.CaptureMouse();
}
private void MouseClickedElseWhere(object sender, MouseEventArgs e)
{
if (e.Clicks >= 1)
{
txtProduct_Leave(sender, new EventArgs());
}
}
private void txtProduct_Leave(object sender, EventArgs e)
{
listProduct.Hide();
}
but obviously it shows error. how do i achieve this? any help?
I had to make click event for my groupboxes even if groupbox doesnt have a click event by default.
//my_page.designer.cs
this.groupBox2.Click += new System.EventHandler(this.groupBox2_clicked);
//my_page.cs
private void groupBox2_clicked(object sender, EventArgs e)
{
listProduct.Hide();
}
I am working in mouse_down event.
private void treeView_MouseDown(object sender, MouseEventArgs e)
Now, In mouse_down event How to check user clicked expand/collpase icon not node?
Note : Before_Expand and Before_Check events will not work bcoz mouse_down event fire first.
private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
var Test = treeView1.HitTest(e.Location);
if (Test.Location == TreeViewHitTestLocations.PlusMinus)
{
//You can check here
}
}
I have a textbox and it's readonly. When I click on I want it to call my button click event:
private void tbFile_Click(object sender, EventArgs e)
{
//btnBrowse_Click(sender, e);
MessageBox.Show("test");
}
When click on the textbox, nothing happens. How do I fix it?
Update:
private void btnBrowse_Click(object sender, EventArgs e)
{
openFile();
}
private void tbFile_Click(object sender, EventArgs e)
{
//btnBrowse_Click(sender, e);
if (tbFile.Text != "")
{
openFile();
}
}
public void openFile()
{
var FD = new System.Windows.Forms.OpenFileDialog();
FD.Filter = "DBF Files|*.DBF";
FD.InitialDirectory = #"C:\";
if (FD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string fileToOpen = FD.FileName;
tbFile.Text = fileToOpen;
}
}
When I hit browse button and select a file, the browse file window comes up again. So it's appearing twice now and the textbox click is still not working.
There is no reason that can be inferred from the information you provided why you shouldn't trigger the openFile() method when you click on the tbFile control.
The fact that the textbox is set to readonly does not stop it from raising the click event in any way.
The only possibility is that the method is not assigned to the click event of the control.
Make sure in the event properties of the control that the click event is indeed assigned to the "tbFile_Click" method.
Just because there exsits a method that's called the same as a control but has "_Click" added does not make it get executed unless you specifically tell c# you want to associate that method with the click event of the control.
When you assign the method through the event window, C# generates a code file behind the scenes that adds the callback to that specific event.
You should use the btnBrowse.PerformClick() method to simulate a user click, instead of calling the handler.
The default I got from VS 2013 was a 'MouseClick' function so this works:
private void btnBrowse_Click(object sender, EventArgs e)
{
MyAwesomeFunction(sender);
}
private void tbFile_MouseClick(object sender, MouseEventArgs e)
{
MyAwesomeFunction(sender);
}
private void MyAwesomeFunction(object sender)
{
MessageBox.Show("test");
}
To determine the content of my context menu I need to detect when the user clicks into the blank area of a treeview.
But, neither the Click nor the MouseClick events fire.
Is it possible to achieve the desired functionality by deriving from TreeView?
If not, what can I do?
You can use the MouseDown event, that fires even in the empty area.
private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
// MessageBox.Show("treeView1_MouseClick");
}
private void treeView1_Click(object sender, EventArgs e)
{
// MessageBox.Show("treeView1_Click");
}
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
MessageBox.Show("treeView1_MouseDown");
}
When I put a button on a form in C#, Visual Studio 2005, and have an action triggered by a button event, such as MouseHover or MouseDown, then the event triggers a single call to the function which defines the action despite the fact that I may continue to hover or keep the left button down. In this case I am trying to move a graphical object by rotating or translating it. I don't want to continue to click the mouse in order to get a repeated call to the transforming function, just keep the mouse hovering or hold the button down. What maintains the action until I cease my own action?
Set a flag on MouseEnter and keep doing the action while the flag remains true. Set the flag to false on MouseLeave.
In your case you need to use a combination of the events MouseDown, MouseMove and MouseUp.
Here a small simplified example to start:
private void OnMouseDown(object sender, EventArgs e)
{
//hit test to check if the mouse pointer is on a graphical object
_myHitObject = the_selected_object
}
private void OnMouseMove(object sender, EventArgs e)
{
if(_myHitObject != null)
//do your action relative to the mouse movements.
}
private void OnMouseUp(object sender, EventArgs e)
{
_myHitObject = null;
}
The solution is to use DoEvents() which allows for the MouseLeave event to be noted and the class variable "more" to be changed:
private void MouseEnter_ZoomIn(object sender, EventArgs e)
{
more = true;
while (more == true)
{
c1Chart3D1.ChartArea.View.ViewportScale *= ZoomMultiple;
Application.DoEvents();
}
} // MOUSEENTER_ZOOMIN()
//-------------------------------------
private void MouseLeave_Stop(object sender, EventArgs e)
{
more = false;
}