c#
  • winforms
  • string
  • 2011-08-05 15 views 94 likes 
    94

    Co mam tutaj robić źle?string.Format() podając "Ciąg wejściowy nie jest w poprawnym formacie"

    string tmp = @" 
        if (UseImageFiles) { 
         vCalHeader += ""<td><img onmousedown='' src= '{0}cal_fastreverse.gif' width='13px' height='9' onmouseover='changeBorder(this, 0)' onmouseout='changeBorder(this, 1)' style='border:1px solid white'></td>\n""; //Year scroller (decrease 1 year) 
         calHeight += 22; 
        }"; 
    
    string x = "xter"; 
    tmp = string.Format(tmp, x); 
    

    uzyskać

    ciąg wejściowy nie był w poprawnym formacie

    kiedy próbuje zmienić {0}. Robię to w C# i WinForms.

    Format Wyjątek był nieobsługiwany
    ciąg wejściowy nie był w poprawnym formacie

    wskazówki Rozwiązywanie uzyskać:

    upewnić się, że metoda argumenty są w formacie właściwym. Podczas konwertowania ciągu znaków na datetime należy przeanalizować ciąg znaków, aby usunąć datę przed umieszczeniem każdej zmiennej w obiekcie DateTime.

    Odpowiedz

    248

    uważa każde "{" lub "}" za element zastępczy (np. "{0}", którego już używasz). Musisz uciec od każdego dosłownego zdarzenia, podwajając je.

    Więc w twoim przypadku zrobić:

    string tmp = @" 
        if (UseImageFiles) {{ 
         ... 
        }}"; 
    
    +0

    wielki, masz to dobrze :) dzięki –

    +4

    Cóż, nie brzmi zbyt chciwy, ale to może chcesz, aby zaakceptować tę odpowiedź ;-) –

    +0

    @Mr. Rendezvous: przeczytaj ten post na temat akceptacji odpowiedzi: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

    Powiązane problemy