概述:
本文描述了如何建立
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
相信只要上网
![](/icons/41226de.gif)
![](/icons/41226dou.gif)
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226zifu.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
如果只要求输入
![](/icons/41226zifu.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
好了
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
---------------------------------------------------------------------------------------------
建立自己
![](/icons/41226de.gif)
首先
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
第
![](/icons/41226yi.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226yinwei.gif)
![](/icons/41226de.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
那么
![](/icons/41226dou.gif)
![](/icons/41226yi.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
![](/icons/41226yinwei.gif)
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226yi.gif)
![](/icons/41226dou2.gif)
在regedit里面
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
当然
![](/icons/41226dou.gif)
![](/icons/41226yi.gif)
![](/icons/41226dou.gif)
![](/icons/41226yi.gif)
我们要
![](/icons/41226de.gif)
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226yi.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226yi.gif)
![](/icons/41226dou2.gif)
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
OK
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
当然
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226yi.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226yi.gif)
1、 新建项目
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou2.gif)
2、 在资源管理里面添加引用
![](/icons/41226System.gif)
![](/icons/41226dou2.gif)
3、 然后
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
using
![](/icons/41226System.gif)
using
![](/icons/41226System.gif)
![](/icons/41226namespace.gif)
{
[StructLayout(LayoutKind.Sequential)]
![](/icons/41226int.gif)
{
public
![](/icons/41226int.gif)
public
![](/icons/41226int.gif)
public
![](/icons/41226int.gif)
public
![](/icons/41226int.gif)
}
[StructLayout(LayoutKind.Sequential)]
![](/icons/41226int.gif)
{
public
![](/icons/41226int.gif)
public Rect rcItem;
public Rect rcButton;
public IntPtr stateButton;
public IntPtr hwndCombo;
public IntPtr hwndEdit;
public IntPtr hwndList;
}
/// <summary>
/// All unmanaged DllImport methods used in this assembly
/// </summary>
![](/icons/41226int.gif)
![](/icons/41226class.gif)
{
[DllImport(\"User32.dll\")]
![](/icons/41226int.gif)
![](/icons/41226static.gif)
[DllImport(\"Shlwapi.dll\")]
![](/icons/41226int.gif)
![](/icons/41226static.gif)
}
}
第 2步
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226yinwei.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226namespace.gif)
{
/// <summary>
/// A control that extends the regular combo box to show URLs.
/// </summary>
public
![](/icons/41226class.gif)
{
/// <summary>
/// Initilaizes a
![](/icons/41226new.gif)
/// </summary>
public URLComboBox
![](/icons/41226kh.gif)
![](/icons/41226kh.gif)
{
}
}
}
首先
![](/icons/41226dou.gif)
using Microsoft.Win32;
在该Control控件内要用到下面
![](/icons/41226yi.gif)
![](/icons/41226dou.gif)
/// <summary>
/// A simple enumeration that wraps various auto complete flags of SHAutoComplete.
/// See documenation of SHAutoComplete for details
/// </summary>
[Flags]
public enum AutoCompleteFlags :
![](/icons/41226int.gif)
{
/// <summary>
/// This
![](/icons/41226include.gif)
![](/icons/41226System.gif)
/// </summary>
File
![](/icons/41226System.gif)
/// <summary>
/// URLs in the User\'s History
/// </summary>
URLHistory = 0x00000002,
/// <summary>
/// URLs in the User\'s Recently Used list.
/// </summary>
URLMRU = 0x00000004,
/// <summary>
/// Use the tab to move thru the autocomplete possibilities instead of to the next dialog/window control.
/// </summary>
UseTab = 0x00000008,
/// <summary>
/// This
![](/icons/41226include.gif)
![](/icons/41226System.gif)
/// </summary>
File
![](/icons/41226System.gif)
/// <summary>
/// Same as File
![](/icons/41226System.gif)
/// Ignore the registry default and force the auto suggest feature _disibledevent=> /// <summary>
/// Ignore the registry default and force the auto suggest feature off
/// </summary>
AutoSuggestForceOff = 0x20000000,
/// <summary>
/// Ignore the registry default and force the auto append _disibledevent=> /// <summary>
/// Ignore the registry default and force auto append off.
/// </summary>
AutoAppendForceOff = -2147483648
}
/// <summary>
/// Enumeration for possible types of registry base keys for storing most recntly typed URLs
/// </summary>
public enum MRUKeyHive :
![](/icons/41226int.gif)
{
/// <summary>
/// Value that indicates HKEY_CURRENT_USER should be used for MRUKey property
/// </summary>
CurrentUser = 1,
/// <summary>
/// Value that indicates HKEY_LOCAL_MACHINE should be used for MRUKey property
/// </summary>
LocalMachine = 2,
}
然后
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
/// <summary>
/// A control that extends the regular combo box to show URLs.
/// </summary>
public
![](/icons/41226class.gif)
{
/// <summary>
/// Member variable which stores the autocomplete flags
/// </summary>
private AutoCompleteFlags _flags = AutoCompleteFlags.File
![](/icons/41226System.gif)
/// <summary>
/// Member variable which stores the mru key
/// </summary>
private
![](/icons/41226string.gif)
/// <summary>
/// Member variable which stores the mru key hive
/// </summary>
private MRUKeyHive _mruKeyHive = MRUKeyHive.CurrentUser;
/// <summary>
/// Initilaizes a
![](/icons/41226new.gif)
/// </summary>
public URLComboBox
![](/icons/41226kh.gif)
![](/icons/41226kh.gif)
{
}
/// <summary>
/// Gets the registry key where MRU URLs are stored
/// </summary>
/// <param name=\"writable\">Indicates whether to get the key so that it values written to it</param>
/// <
![](/icons/41226return.gif)
![](/icons/41226if.gif)
![](/icons/41226return.gif)
private RegistryKey GetMRUKey(bool writable)
{
![](/icons/41226if.gif)
![](/icons/41226dd.gif)
![](/icons/41226return.gif)
RegistryKey ret = null;
switch(_mruKeyHive)
{
![](/icons/41226case.gif)
ret = Registry.LocalMachine.OpenSubKey(_mruKey, writable);
![](/icons/41226break.gif)
![](/icons/41226case.gif)
ret = Registry.CurrentUser.OpenSubKey(_mruKey, writable);
![](/icons/41226break.gif)
}
![](/icons/41226return.gif)
}
/// <summary>
/// Writes information about any ignored exception to the trace.
/// </summary>
/// <param name=\"e\">The exception which is being ignored</param>
private void TraceIgnoredError(Exception e)
{
//It\'s ok
![](/icons/41226if.gif)
![](/icons/41226System.gif)
![](/icons/41226System.gif)
}
/// <summary>
/// Utility function to fill the combob box most recently typed URLs read from registry.
/// </summary>
private void MRUFill
![](/icons/41226kh.gif)
{
![](/icons/41226if.gif)
![](/icons/41226return.gif)
RegistryKey mruKey = null;
try
{
![](/icons/41226int.gif)
![](/icons/41226string.gif)
object defaultValue = String.Empty;
object url;
mruKey = GetMRUKey(false);
![](/icons/41226if.gif)
{
while((url = mruKey.GetValue(String.Format(strFormat, i), defaultValue)) != defaultValue)
{
Items.Add(url);
i
![](/icons/41226jiajia.gif)
}
}
}
catch(Exception e)
{
TraceIgnoredError(e);
}
finally
{
![](/icons/41226if.gif)
mruKey.Close
![](/icons/41226kh.gif)
}
}
/// <summary>
/// Gets or
![](/icons/41226set.gif)
/// </summary>
[Description(\"Gets or
![](/icons/41226set.gif)
public AutoCompleteFlags Flags
{
get
{
![](/icons/41226return.gif)
}
![](/icons/41226set.gif)
{
_flags = value;
}
}
/// <summary>
/// Gets or
![](/icons/41226set.gif)
![](/icons/41226main.gif)
/// </summary>
[DescriptionAttribute(\"The registry key name where the combo box
![](/icons/41226main.gif)
public
![](/icons/41226string.gif)
{
get
{
![](/icons/41226return.gif)
}
![](/icons/41226set.gif)
{
_mruKey = value;
}
}
/// <summary>
/// Gets or
![](/icons/41226set.gif)
/// </summary>
[DescriptionAttribute(\"The registry hive where the combo box
![](/icons/41226main.gif)
public MRUKeyHive MRUKeyHive
{
get
{
![](/icons/41226return.gif)
}
![](/icons/41226set.gif)
{
_mruKeyHive = value;
}
}
/// <summary>
/// Writes the recntly typed URL to the registry
![](/icons/41226if.gif)
/// </summary>
/// <param name=\"e\"></param>
protected override void _disibledevent=>
![](/icons/41226if.gif)
![](/icons/41226dd.gif)
{
Items.Add(Text);
RegistryKey mruKey = null;
//Finally add it to the registry
try
{
mruKey = GetMRUKey(true);
![](/icons/41226if.gif)
mruKey.SetValue(String.Format(\"url{0}\", Items.Count), Text);
}
catch(Exception ex)
{
TraceIgnoredError(ex);
}
finally
{
![](/icons/41226if.gif)
mruKey.Close
![](/icons/41226kh.gif)
}
}
base.OnValidated(e);
}
/// <summary>
/// Finds the handle to the edit control and calls SHAutoComplete _disibledevent=> protected override void _disibledevent=> info.cbSize =
![](/icons/41226System.gif)
![](/icons/41226if.gif)
{
UnManagedMethods.SHAutoComplete(info.hwndEdit, (IntPtr)_flags);
}
MRUFill
![](/icons/41226kh.gif)
}
}
好了
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
你可以在菜单【生成(B)】里面
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
---------------------------------------------------------------------------------------------
建立举例
![](/icons/41226chengxu.gif)
1、 新建项目
![](/icons/41226dou.gif)
![](/icons/41226chengxu.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
2、 我们把我们所需要
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou2.gif)
3、 再把我们自己写
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou2.gif)
4、 在现有
![](/icons/41226de.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou.gif)
![](/icons/41226de.gif)
![](/icons/41226dou.gif)
![](/icons/41226dou2.gif)
![](/icons/41226dou2.gif)
5、 添加
![](/icons/41226yi.gif)
![](/icons/41226dou2.gif)
6、 双击按钮
![](/icons/41226dou.gif)
![](/icons/41226dou.gif)
Cursor currentCursor = Cursor.Current;
try
{
Cursor.Current = Cursors.WaitCursor;
object arg1 = 0; object arg2 = \"\"; object arg3 = \"\"; object arg4 = \"\";
axWebBrowser1.Navigate(urlComboBox1.Text,ref arg1,ref arg2, ref arg3, ref arg4);
}
finally
{
Cursor.Current = currentCursor;
}
7、 生成解决方案
![](/icons/41226dou2.gif)
---------------------------------------------------------------------------------------------
最后:
好了
![](/icons/41226dou.gif)
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226de.gif)
![](/icons/41226dou2.gif)
![](/icons/41226yi.gif)
![](/icons/41226de.gif)
![](/icons/41226de.gif)
最新评论