2014-01-23 1 views
1
var targetGridView = dataGridView1; 
foreach (string line in lines) 
{ 
    if (line == "NEXTDATA") 
    { 
     targetGridView = dataGridView2; 
     continue; 
    } 

    var text = line.Split(',', '\n'); 
    targetGridView.Rows.Add(text); 
} 

В этом примере будут приведены данные до 2 DataGridViews. Мне было интересно, что, если бы я мог изменить его, чтобы после того, как он читал строку «NEXTDATA», он будет делать что-то другое по-другому и вместо этого добавлять к другим элементам управления? Проблема в том, что это будет работать только на DGV. Что делать, если я хочу, чтобы текстовые поля могли или другие элементы управления после достижения этой строки? Это немного головная боль, но я не знаю, что использовать вместо var.Как сделать условие чтения файла за определенной строкой?

test,1,2,3,4,5,6, 
testing,7,8,9,10,11,12, 
working,13,14,15,16,17,18, 
multiline,19,20,21,22,23,24, 
NEXTDATA 
see,25,26,36,46,56,66, // textBox1 (multiline) 
program,7,8,9,10,11,12, // comboBox1 
macroer,13,14,15,16,17,18, // checkBox1 

Так что в этом текстовом файле я хочу, чтобы последние три строки переходили к различным элементам управления, скажем.

+0

Я знаю, что это может быть трудно объяснить словами, но я стараюсь изо всех сил объяснить это. Если что-то непонятно, попробуйте задать вопрос здесь. – puretppc

+0

Вам нужно решить, к чему вы хотите добавить. В противном случае вы столкнулись с гигантской головной болью отражения, чтобы выяснить, можете ли вы отправить данные в элемент управления. –

ответ

2

Скорее всего, если вы добавляете текст к другому элементу управления (например, TextBox), ваша логика его отображения будет отличаться от DataGridView. Таким образом, вы можете просто отделить две части логики. Я буду стараться повторно использовать некоторые из кода:

var isNextDataReached = false; 

foreach (string line in lines) 
{ 
    if (line == "NEXTDATA") 
    { 
     isNextDataReached = true; 
     continue; 
    } 

    if (!isNextDataReached) 
    { 
     var text = line.Split(',', '\n'); 
     dataGridView1.Rows.Add(text); 
    } 
    else 
    { 
     // separate logic to display text in another control 
    } 
} 

На данный момент, ваш файл и код начинают получать немного трудно поддерживать.

Возможно, вы захотите начать думать о лучших способах определения того, какой контроль над вашими данными должен пройти, кроме помещения специальной строки в середине текстового файла.


Просто посмотрел ваше обновление. Я предположил, что вы хотите, чтобы все строки после волшебной струны вошли в один отдельный элемент управления. Но вы хотите, чтобы каждая строка впоследствии потенциально попадала в кучу отдельных элементов управления.

Я не уверен, что это означает, что куча разделенных запятыми данных будет добавлена ​​в CheckBox или массив из TextBox элементов управления.

+0

На самом деле он многострочный, и я нашел способ его обработать, поэтому мне не нужно использовать запятые для spllit. 'var text = line;' 'textBox1.Text + = text;' С другими элементами управления становится сложнее, чем больше, если утверждения, которые я предполагаю? Кроме того, проблема заключается в том, что я хочу сохранить все это в 1 файле, чтобы сохранить «настройки пользователя». – puretppc

+1

Интересно, может быть, вы должны задуматься о создании XML-файла? Под вашим корневым узлом вы можете иметь один узел для каждого типа элемента управления, а затем узлы под ним, представляющие каждую запись в текущем файле. Или сделайте узел для каждой записи, но добавьте атрибут, указывающий, какой тип элемента управления он тоже имеет. Затем вы можете искать файл с помощью [LINQ-to-XML] (http://msdn.microsoft.com/en-us/library/bb943906.aspx) вместо того, чтобы читать текстовый файл по строкам. –

+0

Я не уверен в LINQ или XML в C#. Я еще не узнал об этом. Почему при использовании этого примера это намного эффективнее? – puretppc

Смежные вопросы