VB.net (desktop) context menu assigned to multiple controls owner problem - vb.net

I have two different grid controls on the same form. They share the same context menu. I am having trouble determining which control is the owner when I select the context menu item.

SourceControl property on the ContextMenuStrip class will show the last control that caused that menu strip to be shown.

The event handler for the MenuItem's Click event will have a Sender parameter. This object should be the control that had the focus when the context menu was displayed.

Related

VB.NET Module-level variable to store count of child forms

In this exercise, you’ll create an application with a multiple-document interface that consists of a parent form and two child forms.
Open the project and add a parent form
1. Open the CalculateFlooringCosts project in the CalculateFlooringCostsMDI directory. Then, review the code for the Carpeting Costs and Hardwood Costs forms so you understand how they work.
Add a form to the project, and set the IsMdiContainer property of this form to True to identify it as the parent form. Resize the form so it’s large enough to hold several child forms, and use the Application page of the Project Designer to change the startup form to the new form.
Add the File menu to the parent form
Add a MenuStrip control to the parent form. Then, use the Menu Designer to add a File menu to the parent form. This menu should include four menu items that display a Carpeting Costs form, display a Hardwood Costs form, close the active child form, and exit from the application. Give each menu item an appropriate name, include access keys for the menu and menu items, and include a separator bar between the Close and Exit items.
Add an event handler for the Click event of each item in the File menu. The event handlers for the New Carpeting Costs and New Hardwood Costs items should create a new instance of the appropriate form, set the parent form to the current form, and display the form. The event handler for the Close item should close the active child form, if there is one. And the event handler for the Exit item should exit from the application.
Change the Exit buttons on the Carpeting Costs and Hardwood Costs forms to Close buttons, and change the StartPosition property of these forms to WindowsDefaultLocation.
Test the application to be sure that the items in the File menu work as expected.
Add the Window menu to the parent form
Add a Window menu to the right of the File menu. Then, add three items to this menu that will let the user arrange the forms in a cascaded, vertical, or horizontal layout.
Give each item in the Window menu an appropriate name, and then add an event handler for the Click event of each item that arranges the child forms appropriately.
Set the MdiWindowListItem property of the menu strip so the Window menu will display a list of the open child forms.
Test the application to be sure that the items in the Window menu work as expected.
Add a toolbar to the parent form
Add a ToolStrip control to the parent form. Then, add two buttons to this toolbar with the text “Carpeting Costs” and “Hardwood Costs” on them. Be sure to assign appropriate names to these buttons.
Add an event handler for the Click event of each button that uses the Click event handler for the associated menu to display the form.
Test the application to be sure that the toolbar buttons work.
Add a status bar to the parent form
Add a StatusStrip control to the parent form. Then, add a single ToolStripStatusLabel control to the status bar.
Add a module-level variable to the parent form to store the count of child forms, and give this variable an initial value of 0. Add code to increase or decrease the value of this variable each time a new form is opened or closed.
Add a procedure named DisplayFormCount that sets the Text property of the ToolStripStatusLabel control to “Number of child forms currently displayed: ” appended with the current form count. Then, add code to call this procedure when the form is loaded and each time the form count changes.
Test the application to be sure that the form count is displayed properly.
It's steps 15 and 16 I am stuck on.
I have tried this:
Private Sub DisplayFormCount(Sender As Object, e As EventArgs) Handles Me.MdiChildActivate
Dim activeForm As Form = Me.ActiveMdiChild
Me.sbMain.Items(0).Text = "Number of child forms currently displayed: " & Convert.ToString(Me.MdiChildren.Count)
End Sub
And it works for the most part. Upon form loading, it shows 0, then adding a form will make the count increase by 1. The problem is when I go to close the first child window, it doesn't subract. Afterwards all window closes reduces the count by 1 and when all windows are closed, it still says there's a count of 1.

VB.NET Win. Form - Showing a custom control outside of the container control

I have a created a custom user control which consists of 2 controls:-
Textbox
Listbox
The function of this control is to act as a dropdown list. Below is the image of the control:-
Problem
Now the problem i am facing is that if i insert this user control into a container control like a panel then the list gets hidden inside that container control.
and if i just create the user control outside the container control then it would interfere with the Tab Order (focus order) of the form.
Is there any work around where the user control exists in the container control and still shows the complete list without being hidden in the panel?
Edit i wrongly added c# instead of VB.NET
It can be achieved by having the list as ToolStripDropDown. Similar customization have been done in the following discussion,
Show control inside user control outside the boundaries of its parent
Hope this suits you.

How can a ContextMenuToolStripItem be displayed, without doing it programmatically?

I've taken over a project, which contains some UltraWinGrid controls on some of the forms.
On one of the original forms which has been there since before I took on the project, there is a ContextMenuStrip, which has just one ContextMenuToolstripItem on it, captioned 'Default for Column'.
This ContextMenuStrip is hidden by default, however, when the user right-clicks on the UltraGrid, the ContextMenuStripItem is displayed on the grid (rather than at the top of them form where the ContextMenuStrip is).
I'm trying to replicate this behaviour in a new form that I've added myself, however, after adding the ContextMenuToolstripItem in, I cannot get it to display when right-clicking my grid.
I've put a breakpoint on every subroutine in the in the older forms class, and none of them are triggered when right-clicking it.
Additionally I have also searched the class for DefaultForColumnToolstripMenuItem, and the only place it appears is in the Click event of the ContextMenuToolStripItem itself.
So, how else is it possible to show it when right-clicking the grid? I've copy and pasted the ContextMenuStrip from the old form onto the new form and still nothing occurred.
I'm assuming it's in a property somewhere that I'm missing?
Check for a ContextMenuStrip property on the UltraWinGrid. You can set it in the designer and your context menu will appear on right click without having to deal with the MouseClick handler, checking the mousebutton used, etc.

Assign Event by Event Handler

In my application i am using Krypton Component Factory.
My application i have Ribbon Menu and Some krypton buttons. In krypton buttons i want to assign click event of Ribbon Menu Group Button at run time. The events of Ribbon Menu Group Button Changed Based some condition so i tried like this
Dim eventsField = GetType(Component).GetField("events", BindingFlags.NonPublic Or
BindingFlags.Instance)
Dim eventHandlerList = eventsField.GetValue(KryptonRibbonGroupButton1)
eventsField.SetValue(KryptonButton1, eventHandlerList)
Its not work. The Get Field always return nothing.
Problem: I want add handler of Krypton Button Click event by old ribbon menu button throw coding using the controls name only. Its Possible or not? Its possible how to do it?
am using Vb.Net
Perhaps you're looking for AddHandler?

Setup listbox selectedItem event in Expression Blend

I am trying to learn to use Expression Blend to build SilverLight UI. I am currently working with the ListBox and have managed to add it to my page. In addition, the list box is data-bound to a sample data source defined in Blend.
But I am unable to figure out how to wire up the selectedItem event in Blend. Is this not possible in Blend and do I need to do this part in Visual Studio?
If you select the ListBox, go to the Properties Pane. Next to the Name of the control there are two buttons - Properties and Events. If you click on the Events button it will switch to showing you all of the Events, of which the SelectionChanged event is listed. Note that there is not a "SelectedItem" event, only the SelectionChanged event. The SelectedItem property represents the currently selected item of the ListBox.
Hope that helps.