请教一个winform的layout问题。 乙:用splitter呢,上面放一个,下面放一个,richtextbox也是上面一个,下面一个。改变大小可以通过sizechanged事件来处理,不过如果有更高的要求,喂,丙,你来接手吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你先将richtextbox1的dock属性设为top,家一个splitter,将它的dock属性设为top,然后加一个richtextbox2,将它的dock属性设为client,不就可以达到你要求的效果吗? 对,参照楼上的说法,richTextBox是可以一点一点靠下来的,如下代码,private void InitializeComponent() { this.richTextBox1 = new System.Windows.Forms.RichTextBox(); this.splitter1 = new System.Windows.Forms.Splitter(); this.richTextBox2 = new System.Windows.Forms.RichTextBox(); this.splitter2 = new System.Windows.Forms.Splitter(); this.richTextBox3 = new System.Windows.Forms.RichTextBox(); this.splitter3 = new System.Windows.Forms.Splitter(); this.richTextBox4 = new System.Windows.Forms.RichTextBox(); this.SuspendLayout(); // // richTextBox1 // this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Top; this.richTextBox1.Name = "richTextBox1"; this.richTextBox1.Size = new System.Drawing.Size(292, 56); this.richTextBox1.TabIndex = 4; this.richTextBox1.Text = "richTextBox1"; // // splitter1 // this.splitter1.Dock = System.Windows.Forms.DockStyle.Top; this.splitter1.Location = new System.Drawing.Point(0, 56); this.splitter1.Name = "splitter1"; this.splitter1.Size = new System.Drawing.Size(292, 3); this.splitter1.TabIndex = 5; this.splitter1.TabStop = false; // // richTextBox2 // this.richTextBox2.Dock = System.Windows.Forms.DockStyle.Top; this.richTextBox2.Location = new System.Drawing.Point(0, 59); this.richTextBox2.Name = "richTextBox2"; this.richTextBox2.Size = new System.Drawing.Size(292, 109); this.richTextBox2.TabIndex = 6; this.richTextBox2.Text = "richTextBox2"; // // splitter2 // this.splitter2.Dock = System.Windows.Forms.DockStyle.Top; this.splitter2.Location = new System.Drawing.Point(0, 168); this.splitter2.Name = "splitter2"; this.splitter2.Size = new System.Drawing.Size(292, 3); this.splitter2.TabIndex = 7; this.splitter2.TabStop = false; // // richTextBox3 // this.richTextBox3.Dock = System.Windows.Forms.DockStyle.Left; this.richTextBox3.Location = new System.Drawing.Point(0, 171); this.richTextBox3.Name = "richTextBox3"; this.richTextBox3.Size = new System.Drawing.Size(100, 102); this.richTextBox3.TabIndex = 9; this.richTextBox3.Text = "richTextBox3"; // // splitter3 // this.splitter3.Location = new System.Drawing.Point(100, 171); this.splitter3.Name = "splitter3"; this.splitter3.Size = new System.Drawing.Size(3, 102); this.splitter3.TabIndex = 10; this.splitter3.TabStop = false; // // richTextBox4 // this.richTextBox4.Dock = System.Windows.Forms.DockStyle.Fill; this.richTextBox4.Location = new System.Drawing.Point(103, 171); this.richTextBox4.Name = "richTextBox4"; this.richTextBox4.Size = new System.Drawing.Size(189, 102); this.richTextBox4.TabIndex = 11; this.richTextBox4.Text = "richTextBox4"; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.richTextBox4, this.splitter3, this.richTextBox3, this.splitter2, this.richTextBox2, this.splitter1, this.richTextBox1}); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); }四个richTextBox分割也是蛮轻松的,可惜不知道能否从某个位置开始dock,我试过去改.Location属性,可惜每次运行又按照原来的位置重排了。 splitter需要和 dock 属性结合起来使用,主要是看哪个挤得赢哪个tommyjian(海里的猫) 的方法是可行的不过要把“...然后加一个richtextbox2,将它的dock属性设为client...”改为fill。我那天拖了两个小时,那个WinForm总算听话了,西西! 谢谢各位大虾,问题已经解决了。^_^ 不过,请容许我在这里做个小结。 首先,告诉“一第数倒”,改变大小不需要自己写事件处理哦,splitter已经有拖放的功能了。不过,如果你是说改变整个form的大小,另当别论。 我发现,在form中先放入的控件的dock有较高的优先级。比如你先放入一个richtextbox,设成dock top,那整个top就他占了,别的控件再设dock top,也只能dock在它下面。下面说说我的form的设计。 我的要求是整个form分成左右两部分,右边是一个richtextbox,而左边分成上下两部分,分别放一个richtextbox(呵呵,一个编译器模型)。好,我先在form里放一个rtb(RichTextBox),设成dock right,然后放一个splitter,设dock right,这样splitter就粘在rtb左边了。再放一个rtb2,设dock bottom(为何不先设dock top?自己试试看),再放一个splitter2,设dock bottom,就粘在rtb2上了。最后放一个rtb3,设dock fill,好,完成!运行后你会发现,两个splitter可以拖放,同时改变上下或两边区域的大小,很方便的哦。 整个过程只是在vs.net里拖放控件,改改属性,一行代码都没写哦! 最后,再次感谢各位。嗯,怎么结贴来着…… 各位大神 谁会写 基于海康视频的 Web 远程录像监控啊?求救线等 急急 急 DevExpress求助 求一个正则表达式 ●●加班在线等,如何让线程加载一个窗体?谢谢◆◆◆◆ 如何可以查询数据库里是否已经有了此项了? C#中使用MediaPlayer 9.0 控件的问题。 急求解决:XML和treeView的问题 客户端连接数据库的安全漏洞,有没有办法解决? 解决立马结贴 救命呀。远程数据库备份,由于中间层是Web services,客户端调用Web services的方法来完成............... C#数据库字符串问题 C#中如何连接Oracle 数据库? 我想学C#,请大家指点
设为top,然后加一个richtextbox2,将它的dock属性设为client,不就可以达到你要求的效果吗?
richTextBox是可以一点一点靠下来的,如下代码,
private void InitializeComponent()
{
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.splitter1 = new System.Windows.Forms.Splitter();
this.richTextBox2 = new System.Windows.Forms.RichTextBox();
this.splitter2 = new System.Windows.Forms.Splitter();
this.richTextBox3 = new System.Windows.Forms.RichTextBox();
this.splitter3 = new System.Windows.Forms.Splitter();
this.richTextBox4 = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Top;
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(292, 56);
this.richTextBox1.TabIndex = 4;
this.richTextBox1.Text = "richTextBox1";
//
// splitter1
//
this.splitter1.Dock = System.Windows.Forms.DockStyle.Top;
this.splitter1.Location = new System.Drawing.Point(0, 56);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(292, 3);
this.splitter1.TabIndex = 5;
this.splitter1.TabStop = false;
//
// richTextBox2
//
this.richTextBox2.Dock = System.Windows.Forms.DockStyle.Top;
this.richTextBox2.Location = new System.Drawing.Point(0, 59);
this.richTextBox2.Name = "richTextBox2";
this.richTextBox2.Size = new System.Drawing.Size(292, 109);
this.richTextBox2.TabIndex = 6;
this.richTextBox2.Text = "richTextBox2";
//
// splitter2
//
this.splitter2.Dock = System.Windows.Forms.DockStyle.Top;
this.splitter2.Location = new System.Drawing.Point(0, 168);
this.splitter2.Name = "splitter2";
this.splitter2.Size = new System.Drawing.Size(292, 3);
this.splitter2.TabIndex = 7;
this.splitter2.TabStop = false;
//
// richTextBox3
//
this.richTextBox3.Dock = System.Windows.Forms.DockStyle.Left;
this.richTextBox3.Location = new System.Drawing.Point(0, 171);
this.richTextBox3.Name = "richTextBox3";
this.richTextBox3.Size = new System.Drawing.Size(100, 102);
this.richTextBox3.TabIndex = 9;
this.richTextBox3.Text = "richTextBox3";
//
// splitter3
//
this.splitter3.Location = new System.Drawing.Point(100, 171);
this.splitter3.Name = "splitter3";
this.splitter3.Size = new System.Drawing.Size(3, 102);
this.splitter3.TabIndex = 10;
this.splitter3.TabStop = false;
//
// richTextBox4
//
this.richTextBox4.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBox4.Location = new System.Drawing.Point(103, 171);
this.richTextBox4.Name = "richTextBox4";
this.richTextBox4.Size = new System.Drawing.Size(189, 102);
this.richTextBox4.TabIndex = 11;
this.richTextBox4.Text = "richTextBox4";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.richTextBox4,
this.splitter3,
this.richTextBox3,
this.splitter2,
this.richTextBox2,
this.splitter1,
this.richTextBox1});
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }四个richTextBox分割也是蛮轻松的,可惜不知道能否
从某个位置开始dock,我试过去改.Location属性,可惜
每次运行又按照原来的位置重排了。
不过,请容许我在这里做个小结。
首先,告诉“一第数倒”,改变大小不需要自己写事件处理哦,splitter已经有拖放的功能了。不过,如果你是说改变整个form的大小,另当别论。
我发现,在form中先放入的控件的dock有较高的优先级。比如你先放入一个richtextbox,设成dock top,那整个top就他占了,别的控件再设dock top,也只能dock在它下面。下面说说我的form的设计。
我的要求是整个form分成左右两部分,右边是一个richtextbox,而左边
分成上下两部分,分别放一个richtextbox(呵呵,一个编译器模型)。好,
我先在form里放一个rtb(RichTextBox),设成dock right,然后放一个splitter,设dock right,这样splitter就粘在rtb左边了。再放一个rtb2,设dock bottom(为何不先设dock top?自己试试看),再放一个splitter2,设dock bottom,就粘在rtb2上了。最后放一个rtb3,设dock fill,好,完成!运行后你会发现,两个splitter可以拖放,同时改变上下或两边区域的大小,很方便的哦。
整个过程只是在vs.net里拖放控件,改改属性,一行代码都没写哦!
最后,再次感谢各位。嗯,怎么结贴来着……