我的RichTextBox中的内容如下:
1,34
2,45
3,345
4,4532
5,43
6,566
7,235ssdj
8, sldjlk 
9, dslgjsgj
我想写一个函数,通过一个click事件调用这个函数,函数签名是string fun(string source,int start,int end,int interval)
source 就是RichTextBox;
start 需要行数的开始数;
end  是需要行数的结束数;
interval  满足的行数的间隔数;
如我调用这个函数fun(RichTextBox1.Text,2,8,2);
这个RichTextBox得到的结果就是
2,45
5,43
8, sldjlk
若fun(RichTextBox1.Text,2,8,0);结果是
2,45
3,345
4,4532
5,43
6,566
7,235ssdj
8, sldjlk 
那位大哥帮帮我!谢谢了!

解决方案 »

  1.   

    哈哈,还是上次同样的函数,改动点儿就行了        private string GetStringRange(string source, int from, int to, int span)
            {
                System.IO.MemoryStream ms = new System.IO.MemoryStream(Encoding.Default.GetBytes(source));
                System.IO.StreamReader reader = new System.IO.StreamReader(ms);
                StringBuilder sb = new StringBuilder(100);
                int curPosition = 1;
                while (curPosition++ < from)
                {
                    reader.ReadLine();
                }            while (curPosition > from && curPosition++ < to)
                {
                    sb.Append(reader.ReadLine());
                    sb.Append(Environment.NewLine);                //----------------------------此处是新加的----------------------------
                    for (int i = 0; i < span; i++)
                    {
                        reader.ReadLine();
                        curPosition++;
                    }
                }            return sb.ToString();
            } 
      

  2.   

     for(int   i=0; i<richTextBox1.Lines.Length;i++)   
    {                                          
       string s=richTextBox1.Lines[i];                                          
     }   
      

  3.   

    private void button1_Click(object sender, EventArgs e)
            {
               // MessageBox.Show(this.richTextBox1.Rtf.ToString());            fun(this.richTextBox1,0,3,0);
                
            
            }
            private void fun(RichTextBox rtb, int start, int end, int interval)
            {
                string msg = "";
                
                for (int i = start; i <= end; i++)
                {
                    msg += rtb.Lines.GetValue(i).ToString()+"/n";                
                }
                MessageBox.Show(msg);
            }给你提示,然后你自己去加工一下就出来了
      

  4.   

    private string fun(RichTextBox r, int start, int end, int interval)
            {
                int i = start;
                string result="";
                if (r.Lines.Length < start )
                    return null;
                while (i <= r.Lines.Length)
                {
                    if (i > end)
                        return result.Trim(',');
                    result += r.Lines[i-1] + ",";//添加逗号分隔
                    i += (interval+1);
                }
                return result.Trim(',');
            }
      

  5.   

    就是呀,我想了好久了,把不规则的数据格式导入richtextbox后,要按某种方式对齐,不知道该怎么做,就看高手帮帮我了
      

  6.   

    也是通过一个click事件实现!!!
    即点击某个按钮后,他就按某种方式对齐了!
      

  7.   

    就是类似Eecel中的那些对齐方式!
    如:
    1234,45,23445
    23  ,1 ,234
      

  8.   

    刚开完会。很晚了,写了一个实例,还没测试,你自己先试下吧,下班了,明天来再看。private string JustifyByCol(string source, int blank, char splited)
            {
                StringBuilder sb = new StringBuilder(1000);
                StringWriter sw = new StringWriter(sb);            using (System.IO.MemoryStream ms = new MemoryStream(Encoding.Default.GetBytes(source)))
                {
                    using (System.IO.StreamReader reader = new StreamReader(ms))
                    {
                        while (!reader.EndOfStream)
                        {
                            string[] elements = reader.ReadLine().Split(splited);                        //写动态函数
                            StringBuilder sbDynamic = new StringBuilder(200);
                            sbDynamic.Append("namespace MySpace{");
                            sbDynamic.Append(Environment.NewLine);
                            sbDynamic.Append("public class MyClass{");
                            sbDynamic.Append(Environment.NewLine);
                            sbDynamic.Append("public string OutputLine(){");
                            sbDynamic.Append(Environment.NewLine);
                            sbDynamic.Append("return string.Format(\"");                        StringBuilder sbElements = new StringBuilder(100);
                            for (int i = 0; i < elements.Length; i++)
                            {
                                //格式化语句,格式:return string.Format("{0,-5},{1,-2}", "a", "b");
                                sbDynamic.Append("{");
                                sbDynamic.Append(i.ToString());
                                sbDynamic.Append(",-");
                                sbDynamic.Append(blank.ToString());
                                sbDynamic.Append("},");                            sbElements.Append("\"");
                                sbElements.Append(elements[i]);
                                sbElements.Append("\",");
                            }                        sbDynamic.Append(sbElements.Remove(sbElements.Length - 1, 1).ToString());
                            sbDynamic.Append(");}}}");                        //对于不确定的东西还是使用动态编译吧
                            Microsoft.CSharp.CSharpCodeProvider code = new Microsoft.CSharp.CSharpCodeProvider();
                            System.CodeDom.Compiler.CompilerParameters cmpPar = new System.CodeDom.Compiler.CompilerParameters();
                            cmpPar.ReferencedAssemblies.Add("System.dll");
                            cmpPar.ReferencedAssemblies.Add("System.IO.dll");
                            cmpPar.GenerateInMemory = true;
                            System.CodeDom.Compiler.CompilerResults cmpResult = code.CompileAssemblyFromSource(cmpPar, sbDynamic.ToString());                        Assembly assembly = cmpResult.CompiledAssembly;
                            object obj = assembly.CreateInstance("MySpace.MyClass");                        if (obj != null)
                            {
                                sw.WriteLine((string)obj.GetType().InvokeMember("OutputLine", BindingFlags.InvokeMethod, null, obj, new object[] { }));
                            }
                        }
                    }
                }            return sb.ToString();
            }