2015-11-10 3 views
0

Я надеюсь, что вы можете мне помочь с этим, я пытаюсь создать изображение из диаграммы, первый я использую:C# некорректный реж при попытке сохранить Схему

public void generateDIR() 
{ 
    DocumentsDIR = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
    bool flag=true; 
    int counter = 0; 
    while (flag) 
    { 
     counter++; 
     Console.WriteLine(counter); 
     string dateforDir = "_"+DateTime.Now.Month.ToString() + "_" + DateTime.Now.DayOfWeek.ToString() + "_"+ DateTime.Now.Year.ToString(); 
     ReportDIR = DocumentsDIR + "/SisDatCal_Reports/Report_"+counter.ToString()+dateforDir+ "/"; 
     bool exists = System.IO.Directory.Exists(ReportDIR); 
     if (!exists) 
     { 
      ReportPlotsDIR = ReportDIR + "Plots/"; 
      System.IO.Directory.CreateDirectory(ReportDIR); 
      System.IO.Directory.CreateDirectory(ReportPlotsDIR); 
      flag = false; 
     }  
    } 
} 

получить каталог генерироваться «ReportPlotsDir ", в котором я хочу, чтобы сохранить изображение, то я использую следующий код для создания изображения схемы„chartVolts“:

String ChartVName = ReportPlotsDIR + "IMG_ChartVolts.png"; 
chartVolts.SaveImage(ChartVName, System.Drawing.Imaging.ImageFormat.Png); 

это работает отлично, и нет никакой ошибки, проявленные при выполнении программы, но, когда я иду в свои папки и искал «IMG_ChartVolts.png», он сохраняется в папке «Bin \ Debug» solutio n, а не в «ReportPlotsDIR». Любая идея, почему это происходит?

+0

Вы пробовали отладку? Какова ценность 'ReportPlotsDIR'? –

+1

Кроме того, я не уверен, что это имеет значение, но если это работает в Windows, пути разделяются обратными косыми чертами «\», а не косой чертой «/». Используйте 'Path.Combine', и он позаботится о вас. –

+3

Вам нужно отлаживать. Просмотр значений переменных при отладке. Вы увидите, что не так, как вы думаете, и когда. Это основной и * чрезвычайно важный навык, необходимый разработчикам. Если вы не знаете, как остановите все, что вы когда-либо задумывались, и прочитайте это https://msdn.microsoft.com/en-us/library/k0k771bt.aspx – Will

ответ

1

Поместите точку отладки и увидеть значение ReportDIR, вы заметите, что вам необходимо использовать обратный слэш, а не прямой косой черты, но лучше использовать Path.Combine как:

ReportDIR = Path.Combine(DocumentsDIR, "SisDatCal_Reports\\Report_" + counter + dateforDir + "\\"); 

Помимо что для форматирования даты можно использовать:

string dateforDir = DateTime.Now.ToString("_MM_dddd_yyyy", System.Globalization.CultureInfo.InvariantCulture); 
+0

Я реализовал это, но проблема все еще происходит –

+0

Заменить 'ReportPlotsDIR = ReportDIR +" Сюжеты/";' с 'ReportPlotsDIR = Path.Combine (ReportDIR," Сюжеты \\ ");' также. – Habib

0

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

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