2015-11-06 1 views
1

Я делаю программу, крошечную часть кода, где я хочу получить номер недели, когда вы вводите дату. Но есть небольшой поворот, я не хочу подавать аргумент после запуска программы, но перед ней. Я хочу начать свою программу с Run или Ctrl + R. Моя программа называется getWeek. Поэтому, когда я набираю Run getWeek 6-11-2015, я должен получить TextBox с надписью «Неделя 45». Его чисто хобби. Ниже мой код, чтобы найти номер недели.Feed Входной аргумент перед запуском программы

public static int GetIso8601WeekOfYear(DateTime time) 
{ 
    DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time); 
    if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday) 
    { 
     time = time.AddDays(3); 
    } 
    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); 
} 

Вопрос заключается в том, как получить DateTime time из Run. Пожалуйста помоги.

+0

Это консольное приложение? – hellogoodnight

+0

Если это консольное приложение, вы можете указать аргументы, когда вы его вызываете. См. Мой ответ в этом вопросе (http://stackoverflow.com/questions/31816049/calling-stored-procedure-values-into-the-console-application-c-sharp/31816326#31816326). – Han

+0

Это форма приложения. –

ответ

1

Вы можете указать некоторые аргументы при вызове приложения. Просто измените метод Main в Program.cs. Добавьте массив в свой метод Main. Затем вы можете запустить exe и добавить некоторые значения за exe, например WindowsApplication6 abc def ghi.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows.Forms; 

namespace WindowsFormsApplication6 
{ 
    static class Program 
    { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     [STAThread] 
     static void Main(string[] args) 
     { 
      foreach (var arg in args) 
      { 
       MessageBox.Show(arg); 
      } 

      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Form1()); 
     } 
    } 
} 

Если вы хотите, чтобы указать некоторые параметры из Visual Studio (как при отладке), вы можете добавить их в свойствах проекта.

enter image description here

+0

Это я искал. @handodko Спасибо –

0

Я думаю, ваша проблема в том, что вы не можете преобразовать ваш вклад в stringDateTime. Вот метод, который вы можете использовать, чтобы получить DateTime:

public static DateTime GetDateTimeFromString(string date) 
    { 
     string[] split = date.Split('-'); 
     int day = Convert.ToInt32(split[0]); 
     int month = Convert.ToInt32(split[1]); 
     int year = Convert.ToInt32(split[2]); 
     return new DateTime(year, month, day); 
    } 

ПРИМЕЧАНИЕ: Эта функция специфична для отформатированной строки.

Тогда вы можете вызвать этот метод так:

 string date = "06-11-2015"; 
     DateTime time = GetDateTimeFromString(date); 
     textBox1.Text = "Week " + Convert.ToString(GetIso8601WeekOfYear(time)); 
Смежные вопросы