public TextDataAdapter(FixedTextDefines defines, string dataText) : this(defines) { //TODO:テキストが挿入された状態と合わせなければならない、もしくはテキストボックス側を直計算する DataRecords = new List <string>(); //最初の文字からレコード識別を読み込んで、内部情報として保持していく KeyLength = TextDefines.Records.First().Items.FirstOrDefault(v => v.Recognition).Length; HasCrLf = dataText.IndexOf("\r\n") > 0; if (string.IsNullOrEmpty(dataText)) { return; } var firstKeyValue = dataText.Substring(0, KeyLength); int textIndex = 0; while (true) { try { var kind = GetRecordKind(firstKeyValue); var sb = new StringBuilder(); foreach (var item in kind.Items) { sb.Append(dataText.Substring(textIndex, item.Length)); textIndex += item.Length; } DataRecords.Add(sb.ToString()); } catch (ArgumentOutOfRangeException) { //テキストがなくなったら終わり break; } } }
/// <summary> /// オートスクロール可能なパネルに /// 定義されたラベル・テキストボックスを作成します /// </summary> private void MakeControls(FixedTextDefines source) { foreach (var record in source.Records) { //タブとパネル this.tabControlMain.TabPages.Add(record.Name, record.Name); var panel = new Panel() { Dock = DockStyle.Fill , AutoScroll = true }; //パネルの中身 int y = 0; int startIndex = 0; foreach (var item in record.Items) { var labelText = LabelTextFactory.Generate(item, startIndex); labelText.Location = new Point(0, y); panel.Controls.Add(labelText); y += 25; startIndex += item.Length; } this.tabControlMain.TabPages[record.Name].Controls.Add(panel); } }
public TextDataAdapter(FixedTextDefines defines) : this() { TextDefines = defines; int start = 0; KeyLength = 1; bool hasKey = false; foreach (var item in defines.Records.First().Items) { if (item.Recognition) { KeyLength = item.Length; hasKey = true; break; } start += item.Length; } KeyStart = start; if (!hasKey) { KeyStart = 0; } }