Hi,
I want a combo box which would behave like the combox box present on FileOpenDialog. This combo box display its contains in tree view manner in its drop down list. If there is any special control in infragistic, please let me know. If not, how should i proceed?
Thanks in adavance,
Ujwal Salunkhe
The user who was looking for assistance on this mentioned AfterSelect, so I used that to keep things simple. The key here is that you have to tell the dropdown when to close. As you pointed out, doing it in response to AfterSelect will cause it to close when a node is selected via the keyboard, which is probably not ideal for most applications. You could easily change that to close in response to the KeyDown event when the Enter key comes in, and also when a MouseUp comes in (or MouseClick, MouseDoubleClick, etc.), i.e., whatever action you decide should close the dropdown. You could even have a more sophisticated dropdown where you put the UltraTree on a UserControl, along with a close button, and close the dropdown when that button is clicked.
I found this thread as I was searching for example of your Tree Control. Will the solution provided by you that involves using AfterSelect work when the user is using the keyboard to navigate the tree? Based on my preliminary tests, the first node that the user moves to will trigger the AfterSelect event. Presumably, the user hasn't "selected" a node until he/she hits the 'Enter' key. Everything works fine with the AfterSelect event if I test with just the mouse.
Thanks,
Andrew
Handle the DropDownEditorButton's BeforeDropDown event, and match the text in the UltraTextEditor to a node. If the node keys are the same as the text, you can use UltraTree's GetNodeByKey method to find the node. Once you have a reference to the node, you can set its Selected property to true.
Brain, i did this using the designer and not at the runtime. That could be the reason i didn't get the event.
I solved the problem by adding a double-click event and in the Tree_AfterSelect event i would call double-Click event so that it closes.
Now, after selecting a value from tree, the TextEditor is set to the that value.Next time the user clicks on the dropdowneditor button, treeview is shown but the node is not selected by default.
Eg: User selects the last leaf node and comes back to the treeview. I have a scroll bar (vertical) and hence it shows from the top, user is not able to see the treeview with the node selected.
Instead, the tree view should be displayed with the value in the texteditor as the selected node. Is that possible?
Thanks.,
Sorry, I am still not following why you were "not able to get the DropDownEditorButton class' CloseUp method", but hopefully the following code sample will clarify the correct approach:
using Infragistics.Win;using Infragistics.Win.UltraWinEditors;using Infragistics.Win.UltraWinTree;
private void button1_Click(object sender, EventArgs e){ // Create a DropDownEditorButton DropDownEditorButton dropDownButton = new DropDownEditorButton( "dropDownButton" );
// Create an UltraTree, set its size, add some nodes UltraTree treeControl = new UltraTree(); treeControl.Size = new Size( this.ultraTextEditor.Width, 200 ); for ( int i = 0; i < 100; i ++ ) { treeControl.Nodes.Add( null, "Node" + i.ToString() ); } // Assign the UltraTree to the DropDownEditorButton's Control property dropDownButton.Control = treeControl;
// Add the DropDownEditorButton to the UltraTextEditor's ButtonsRight collection this.ultraTextEditor.ButtonsRight.Add( dropDownButton );
// Assign a reference to the UltraTextEditor to the UltraTree's Tag property. treeControl.Tag = this.ultraTextEditor;
// Handle the UltraTree's AfterSelect event treeControl.AfterSelect += new AfterNodeSelectEventHandler(treeControl_AfterSelect);}
private void treeControl_AfterSelect(object sender, SelectEventArgs e){ UltraTree tree = sender as UltraTree; if ( e.NewSelections.Count == 1 ) { UltraTextEditor ute = tree.Tag as UltraTextEditor; if ( ute != null && ute.ButtonsRight.Exists("dropDownButton") ) { // Assign the selected node's text to the UltraTextEditor's Text property ute.Text = e.NewSelections[0].Text; DropDownEditorButton dropDownButton = ute.ButtonsRight["dropDownButton"] as DropDownEditorButton;
// Close the dropdown dropDownButton.CloseUp(); } }}