SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftMask/OCX 7.0 - Masked Edit Control
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftPrintPreview/DLL 2.0 - Print Preview Control (discontinued)
SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftDirectory 3.5 - File/Folder Control (discontinued)
SftMask/OCX 7.0 - Masked Edit Control
SftOptions 1.0 - Registry/INI Control (discontinued)
SftPrintPreview/OCX 1.0 - Print Preview Control (discontinued)
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftTabs/NET 6.0 - Tab Control (discontinued)
SftTree/NET 2.0 - Tree Control
This sample illustrates implementation of a simple Windows Explorer/File Explorer.
The source code is located at C:\Program Files (x86)\Softelvdm\SftDirectory 3.5\Samples\Visual Studio - CSharp\SimpleExplorer\Form1.cs or C:\Program Files\Softelvdm\SftDirectory 3.5\Samples\Visual Studio - CSharp\SimpleExplorer\Form1.cs (on 32-bit Windows versions).
private void Form1_Load(object sender, System.EventArgs e) { UpdateLeftButtons(); UpdateRightButtons(); axSftDirectoryRight.MakeColumnsOptimal(); } private void UpdateLeftButtons() { // Update the buttons dependent on the left tree SftDirectoryFolder f; // Enable/disable Up button f = axSftDirectoryLeft.CurrentFolder; if (f != null) f = f.Parent; buttonUp.Enabled = (f != null); } private void UpdateRightButtons() { // Update the buttons dependent on the right side detaillist SftDirectoryFolder f; // Enable/disable properties button f = axSftDirectoryRight.CurrentFolder; buttonProp.Enabled = false; if (axSftDirectoryRight.SelectionCount > 0 && f != null) { if (f.Can("properties")) buttonProp.Enabled = true; } // Enable/disable New Folder button f = axSftDirectoryRight.RootFolder; buttonNewFolder.Enabled = false; if (f != null) { if (f.Can("NewFolder")) buttonNewFolder.Enabled = true; } } private void axSftDirectoryLeft_SelectionFinal(object sender, System.EventArgs e) { // If the selection in the left tree changes, update right side detaillist UpdateLeftButtons(); axSftDirectoryRight.Clear(); axSftDirectoryRight.CancelMode(); axSftDirectoryRight.Refresh(); if (axSftDirectoryLeft.CurrentFolder != null) axSftDirectoryRight.TopMostFolderIDL = axSftDirectoryLeft.CurrentFolder.ItemIDList; else axSftDirectoryRight.TopMostFolderSpecial = SftDirectorySpecialFolderConstants.specialSftDirectoryEmpty; } private void axSftDirectoryRight_Opening(object sender, AxSftDirectoryLib30._ISftDirectoryEvents_OpeningEvent e) { SftDirectoryFolder f; String IDL; // we're about to open a file/folder. If we can add the folder on the // left side, that means we don't need to open it in a separate window IDL = e.folder.ItemIDList; // the folder we are looking for // this will add the complete hierarchy down to the folder in // left tree (if possible) f = axSftDirectoryLeft.get_FolderUsingIDL(IDL, false); // this will locate the exact item if we just added it f = axSftDirectoryLeft.get_FolderUsingIDL(IDL, true); if (f != null) { // The folder has been added on the left side f.MakeCurrent(); // make it the current item f.MakeVisible(); // make sure it's scrolled into view e.allow = false; // no need to open it } } private void axSftDirectoryRight_SelectionFinal(object sender, System.EventArgs e) { UpdateRightButtons(); if (axSftDirectoryRight.CurrentFolder != null) statusBar.Text = axSftDirectoryRight.CurrentFolder.InfoTip; else statusBar.Text = ""; } private void buttonUp_Click(object sender, System.EventArgs e) { // Move up on level in left side tree control SftDirectoryFolder f; f = axSftDirectoryLeft.CurrentFolder; if (f != null) { f = f.Parent; if (f != null) { f.MakeCurrent(); // make it the current item f.MakeVisible(); // make sure it's scrolled into view } } } private void buttonProp_Click(object sender, System.EventArgs e) { // Display properties dialog for the currently selected item SftDirectoryFolder f; f = axSftDirectoryRight.CurrentFolder; if (axSftDirectoryRight.SelectionCount > 0 && f != null) f.Do("properties"); } private void buttonNewFolder_Click(object sender, System.EventArgs e) { // Create a new folder SftDirectoryFolder f; f = axSftDirectoryRight.RootFolder; if (f != null) { try { f.Do("NewFolder"); } catch } } private void axSftDirectoryLeft_KeyDownEvent(object sender, AxSftDirectoryLib30._ISftDirectoryEvents_KeyDownEvent e) { // F5 automatically reloads left side, but we also want right side updated if (e.keyCode == (short) Keys.F5) axSftDirectoryRight.Reload(true, true); } private void axSftDirectoryRight_KeyDownEvent(object sender, AxSftDirectoryLib30._ISftDirectoryEvents_KeyDownEvent e) { // F5 automatically reloads right side, but we also want left side updated if (e.keyCode == (short) Keys.F5) axSftDirectoryLeft.Reload(true, true); }