NOV can show not only drop down menus, but any widget in a context fashion. The example below demonstrates how you can display an interactive popup that allows the user enter some text and if the user clicks on the <OK> button, the newly entered text is applied on the label for which we show the context popup:
Interactive Context Popup Example |
Copy Code
|
---|---|
NLabel label = new NLabel("Right click me to change my text"); label.HorizontalPlacement = ENHorizontalPlacement.Left; label.VerticalPlacement = ENVerticalPlacement.Top; label.Background = new NBackground(NColor.PapayaWhip); label.Border = NBorder.CreateFilledBorder(NColor.Black); label.BorderThickness = new NMargins(1); label.MouseDown += new new Function<NMouseButtonEventArgs>(OnLabelMouseDown); private void OnLabelMouseDown(NMouseButtonEventArgs arg1) { // Check whether the right mose down was used if (arg1.Button != ENMouseButtons.Right) return; // Mark the event as handled arg1.Cancel = true; // Create the content of the popup NStackPanel stack = new NStackPanel(); stack.Padding = new NMargins(5); NLabel label = new NLabel("New text:"); NTextBox textBox = new NTextBox(); textBox.PreferredWidth = 200; NPairBox pairBox = new NPairBox(label, textBox); stack.Add(pairBox); NButtonStrip buttonStrip = new NButtonStrip(); buttonStrip.InitOKCancelButtonStrip(); stack.Add(buttonStrip); // Create the popup window NPopupWindow popup = new NPopupWindow(stack); // Store the label in the tag property of the popup popup.Tag = args.CurrentTarget; // Subscribe to the window's closed event popup.Closed += new Function<NEventArgs>(OnPopupClosed); // Open the popup window in context fashion NPopupWindow.OpenInContext(popup, arg1.CurrentTargetNode, arg1.ScreenPosition); } private void OnPopupClosed(NEventArgs arg1) { NPopupWindow popup = (NPopupWindow)arg1.CurrentTargetNode; if (popup.Result != ENWindowResult.OK) return; // Get the popup's text box NStackPanel stack = (NStackPanel)popup.Content; NPairBox pairBox = (NPairBox)stack[0]; NTextBox textBox = (NTextBox)pairBox.Box2; // Update the text of the label NLabel label = (NLabel)popup.Tag; label.Text = textBox.Text; } |