comboBox 其实是一个嵌套控件(复合控件)在 DropDownList 状态时;他由 下拉列表,和 comboBox 本身组成
DropDown 状态时 comboBox 中多了一个 edit 就是 .net 下的 TextBox 那个输入状态是由 edit 控制的;
不过这个 edit 是无法在 .net 下取得的 this.comboBox1.Controls.Count 返回 0;
需要知识
1) 如果取得子控件;这个有多种方法可以实现我们选择 GetWindow 这个 API 取xx窗口或控件下的第一个子控件比较方便也不用回调什么的;
比 EnumWindows API 容易用多了
2) 如何给 edit (TextBox) 设置只读状态;
这个就是发个消息基本可以搞定(不过忘记是那个消息了),看看 msdn 找 em_ 开头的消息,找到 EM_SETREADONLY 看名字就是他了;
根据 SDK 规则,em_ 开头的消息都是对应 edit 的;
示例代码:
using System.Runtime.InteropServices; //引入命名空间
namespace BuyTong
{
public partial class StockAdd : Form
{
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetWin