Changing properties of the control that calls a Context Menu - vb.net

I have 10 PictureBox on a windows form (created in Design View) and a context menu strip is attached to each of them. I am trying to set the property of the PictureBox using the context menu.
For eg If the user selects Red from the context menu a Red picture shows up
I can get the the name of the control that popped the Context Menu strip by
cmStrp1.SourceControl.Name
Is there any way I can use the cmStrp1.SourceControl.Name to get the object/control and set its properties

Just use cmStrp1.SourceControl instead of cmStrp1.SourceControl.Name. You need to cast the control to a PictureBox before using it.

Related

Devexpress Form With Header Panel (Title) and Menu Below Panel

Can someone give me insight how can I achieve the form with panel title first and then menu bar below panel (barmanager). Because devexpress always put barmanager on top
Thank you
EDIT :
After I add standalonebardock, the result as picture shown below: the red bar is standalonebardock
UPDATE :
After I drag the barmanager menu into standalonedock, now it is already inside the dock. But the menu still on top docking, what I need how to make space above menu so I can write title/image/etc
The StandaloneBarDockControl control allows bars to be displayed at any position within the form, not simply docked to the form’s edge. To do this, create a StandaloneBarDockControl object and add bars to it. Bars can be added to the control at design time or runtime.

How to make VB.NET application full screen without moving my controls

I want to make my application so that when it has been maximized the control will automatically position itself it the right place.
Assuming that this is a WinForm project, you need to set the Anchor property of the button to Bottom, Right.
The most useful control is the TableLayoutPanel. You should put all the controls on the panel -> set dock: Full and every time the form resized, the controls stay in their container.

panel autoscroll turns off when switching between windows

I created an interface it has several forms you can switch between using a panel as the parent form. My problem is that when i switch between my forms on the second time i open a form if that form has autoscroll on a panel it will not allow you to scroll and the window is stuck on the view you previously had.
In this image i open the form internet. after doing so i will click on instruction( any form switch triggers this)
now i open the same form again and the scroll bar is gone and it locks in on the last position the form was in.
the very curious thing in this is that this only happens on the internet form word also has a scroll bar however even though the properties and settings for both are identical only one does not work.
What could be causing this and how do i go about troubleshooting errors like this.
The forms are removed from the panel and re-added, they are not closed.
Assumption 0:
The forms are removed from the panel and re-added, they are not
closed.
Store the state of panel autoscroll and set it after you have re-added it. Note that if you add controls to the panel first and panel is not docked, then scroll will not appear because panel dimensions can be huge. You should set following property as well:
vScrollBar1.Vericalscroll.Value = 0
Assumption 1:
I assume what is actually going on is that you do not add controls to that panel, but to the form behind it or something similar. In that case - program is correct, you just asked it to do a wrong thing.
Assumption 2:
Assuming is panel is anchored top, left, bottom, right. There is currently a limitation in Windows Forms that prevents all classes derived from ScrollableControl from acting properly when both RightToLeft is enabled and AutoScroll is set to True.
Manual : link
Assumption 3:
You add the controls back, by recreating them, but forget to add handlers or create them in order where scrollbar is out of view. Instead of absolute positions you could use dockstyle:
Dim vScrollBar1 As VScrollBar = New VScrollBar
vScrollBar1.Dock = DockStyle.Right
Controls.Add(vScrollBar1)

Is control location relative to visible area of form when form has scroll bar?

I have a VB.NET form that dynamically creates a set of controls. If there are too many controls to view on the form, the form will show a scroll bar. (It is an autoscroll form.)
The user can scroll down and click a button which causes the form to change dramatically. It destroys all controls and draws new ones based on user input.
I've noticed that if the user is scrolled to the bottom of the form and click the button, when I destroy and create new controls they aren't located where I want them. It seems to put them relative to the visible portion of the form rather than the top of the top.
Example:
checkbox1.top = 50
checkbox1.left = 15
If the scrollbar is all the way at the bottom, the checkbox should be placed above the visible part of the form. Instead, it is drawn 50 pixels from the top of what I can see.
Please help. How do I make it place the control at an absolute location, rather than being relative to the current position of the scrollbar?
You have to compensate for the scroll position of the container control.
If a panel, then it would look like this:
checkbox1.Top = Panel1.AutoScrollPosition.Y + 50
Alternatively, you could just use a FlowLayoutPanel control, which would handle the placement of the controls for you.

Location of context menu strip

I have a context menu strip on my form which is displayed on right click on the datagridview.
Problem is the menu is displayed on the upper right corner while I want to show it on the location where mouse is clicked.
Please advise.
Thanks
A ContextMenuStrip could be automatically shown by a DataGridView at the location of the MouseDown click event.
For this to happen it is necessary to associate the property ContextMenuStrip to the actual instance of your menu strip. You could do this either by code or directly in the designer
DataGridView1.ContextMenuStrip = ctxMenu;