開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第1张

             最進在使用VS2005開發時,發現有很多新東西,比如,我們常用的ToolBar ,MainMenu,StatusBar,變成了功能強大,樣式新穎的,ToolStrip,MenuStrip,StatusStrip,等.不過還是有些不足,比如,ComboBox 變化不大,下拉框里面只能是文本的,很不方便,我的想法是在下拉ComboBox時會出現TreeView 控件,這也是我今天要做的控件ComboBoxTreeView
開始寫了一個,關鍵點是彈出TreeView 控件,但是把TreeView 做成一個窗體,彈出,還是有什么辦法,一查VS2005有一個類窗體彈出類(很強大的對象)ToolStripDropDown, 在使用此類的時候需要傳遞一個ToolStripControlHost類型的對象,還有個問題就是,TreeView 彈出了,會在它的上方出現了一條小白條,這個問題很棘手,不過如果你懂Win32那就一切OK了,好,我們看看這個類吧.
一:ComboBoxTreeView

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第2张 using  System.Data;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第2张
using  System.Text;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第2张
using  System.Windows.Forms;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第2张
namespace  WindowsApplication14
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第6张
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张    
public class ComboBoxTreeView : ComboBox
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第10张    
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        
private const int WM_LBUTTONDOWN = 0x201, WM_LBUTTONDBLCLK = 0x203;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        ToolStripControlHost treeViewHost;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        ToolStripDropDown dropDown;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        
public ComboBoxTreeView()
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第17张        
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            TreeView treeView 
= new TreeView();
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            treeView.AfterSelect
=new TreeViewEventHandler(treeView_AfterSelect);
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            treeView.BorderStyle 
= BorderStyle.None;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张           
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            treeViewHost 
= new ToolStripControlHost(treeView);
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            dropDown 
= new ToolStripDropDown();
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            dropDown.Width 
= this.Width;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            dropDown.Items.Add(treeViewHost);
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张        }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        
public void treeView_AfterSelect(object sender, TreeViewEventArgs e)
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第30张        
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            
this.Text=TreeView.SelectedNode.Text;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            dropDown.Close();
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张        }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        
public TreeView TreeView
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第37张        
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第40张            
get return treeViewHost.Control as TreeView; }
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张        }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        
private void ShowDropDown()
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第45张        
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            
if (dropDown != null)
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第49张            
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张               treeViewHost.Size 
=new Size(DropDownWidth-2,DropDownHeight);       
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张               dropDown.Show(
this0this.Height);
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张            }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张        }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        
protected override void WndProc(ref Message m)
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第57张        
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            
if (m.Msg == WM_LBUTTONDBLCLK || m.Msg == WM_LBUTTONDOWN)
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第61张            
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张                ShowDropDown();
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张                
return;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张            }
        
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            
base.WndProc(ref m);
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张        }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张        
protected override void Dispose(bool disposing)
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第70张        
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            
if (disposing)
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第74张            
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张                
if (dropDown != null)
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第78张                
{
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张                    dropDown.Dispose();
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张                    dropDown 
= null;
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张                }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张            }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张            
base.Dispose(disposing);
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张        }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第28张    }

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第9张
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第89张}

開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第2张
開發VS2005下ComboBoxTreeView(下拉列表框彈出樹) 與ToolStripComboBoxTreeView(下拉列表框工具條彈出樹) -开发者知识库,第2张

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复