我的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,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
那位大哥帮帮我!谢谢了!
{
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();
}
{
string s=richTextBox1.Lines[i];
}
{
// 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);
}给你提示,然后你自己去加工一下就出来了
{
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(',');
}
即点击某个按钮后,他就按某种方式对齐了!
如:
1234,45,23445
23 ,1 ,234
{
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();
}