日期:2014-05-18  浏览次数:20745 次

winform开发中,子窗口的textbox问题
建立两个form,form1和form2
form1中放入一个textbox1,设为多行,下面放一个panel
form2中放入一个textbox2,设立多行
然后在form1中如此写
C# code

        public Form1()
        {
            InitializeComponent();
            Form2 f2 = new Form2();
            f2.TopLevel = false;
            this.panel1.Controls.Add(f2);
            f2.Show();
        }


结果,textbox1输入一大段文字后,可以随便选择,textbox2输入一大段文字后,不可以随便选择,为什么?有没有可以让textbox2也可以随便选择呢?

------解决方案--------------------
this.panel1.Controls.Add(f2);
Panel Control的Add参数,是Control,没有Form,也就是Panel是不能承载Form的。在一个窗体中添加另一个窗体可以用MDI,因种种原因不能用MDI,那可以考虑在Panel中放置自定义控件,干嘛非要整个窗体。
至于panel中添加窗体后,textbox不能自由选中的原因,个人认为是Windows在计算窗体坐标的时候出现问题。LZ可以这样试一下
C# code

        public Form1()
        {
            InitializeComponent();
            Form2 f2 = new Form2();
            f2.TopLevel = false;
            this.panel1.Controls.Add(f2);
            f2.FormBorderStyle = FormBorderStyle.None;
            f2.BringToFront();
            f2.Show();
        }