2015-02-24 2 views
0

Я использую drawstring, чтобы получить элемент из списка, который будет отображаться, но теперь я хотел бы, чтобы он отображался как 4-значное число вместо одной цифры.Как использовать формат строки в элементе списка

Так что вместо него отображается 0 Мне бы хотелось, чтобы он отображал 0.000. Если бы кто-нибудь мог мне помочь, это было бы хорошо.

Это тип используемого списка.

List<string> ListVrd = new List<string>(); 

Код, используемый для заполнения списка.

c = drART["MVRD"].ToString(); 
ListVrd.Add(c); 

И строка кода, используемая для печати изделия.

row = ListVrd[itemsPrinted]; 
e.Graphics.DrawString(row, DefaultFont, Brushes.Black, distance, currentY);//print item 
+0

Верхняя строка устанавливает строку из «ListVrd», а нижняя использует «ListSgr» .. они такие же? – Sayse

+0

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

+0

Как вы заполняете 'ListVrd'? – Dennis

ответ

0

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

Это код im, который используется сейчас.

c = drART["MVRD"].ToString(); 
c2 = (String.Format("{0:###,###0,000} ", Convert.ToInt32(c), cult)); 
ListVrd.Add(c2); 
-2

Вам нужно преобразовать string в числовом виде, а затем преобразовать его обратно в string в нужном формате, например,

formattedString = Convert.ToDouble(unformattedString).ToString("n3"); 

Где вы на самом деле сделать преобразование до вас, то есть перед тем, как добавить элемент в список, или когда вы берете его. Я должен задаться вопросом, хотя, если данные представляют собой число, то почему оно хранится как string в первую очередь?

+0

Это абсурд. Вместо преобразования числа в нужную строку, при заполнении списка вы предлагаете двойное преобразование. – Dennis

+0

@ Денис, это ответ на вопрос, который был задан. Также нет необходимости использовать обе части преобразования. «Двойное преобразование» содержит два отдельных преобразования, поэтому, если у вас есть число (к которому я конкретно упоминал), вам, очевидно, придется использовать только вторую. – jmcilhinney

+0

@jmcilhinney вопрос был обновлен вскоре после того, как вы разместили это. – Jamiec

1

Я полагаю, что исходит от drART этого числа, в этом случае вы можете отформатировать его там:

c = ((float)drART["MVRD"]).ToString("0.000"); 
ListVrd.Add(c); 

Обратите внимание, что выше, предполагает, что число приходит из drART["MVRD"] является float. Проверьте тип его на самом деле есть - это может быть int, decimal, long и т.д.

См Standard formatting strings и Custom formatting strings

+0

Если я попробую, то это даст мне эту ошибку: нет перегрузки для метода 'ToString' принимает 1 аргумент – maam27

+0

@ maam27 - вам нужно сначала привести результат от 'drART' до нужного типа. Сообщение об ошибке обновления – Jamiec

+0

Что я буду использовать для числовых? Я пробовал код с int, но если бы я пошел, это дало бы мне следующее: «Указанный приведение недействительно». – maam27