2015-12-14 6 views
1

Я работаю с файлом WPF с добавленными 2 классами. У меня есть класс Movie, класс Utility, MainWindow.xaml и MainWindow.xaml.cs. Моя программа задает вопросы о фильме, вводится в окне .xaml и создает сетку данных внизу. В классе Movie у меня есть все мои публичные строки и дата. Как так:Преобразование строки в int, int в строку

namespace FinalExam 
{ 
    public class Movie 
    { 
     public string movieName { get; set; } 

     public DateTime releaseDate { get; set; } 

     public string onDVD { get; set; } 

     public string onBluRay { get; set; } 

     public string genreType { get; set; } 

     public string directorName { get; set; } 

     public string producerName { get; set; } 

     public int movieLength { get; set; } 

     public string moveRating { get; set; }   
    } 
} 

В классе MainWindow.xaml.cs, все строки называются, а Dateline конвертируются в строку, используя синтаксис ConvertStringToDate.

Проблема, с которой я столкнулся, - заставить MovieLength работать. Я ввел его, но не знаю, как заставить его появляться в сетке, не отключая мое бу. Во всяком случае, вот что у меня есть.

namespace FinalExam 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     //GLOBAL VARIABLE AREA 
     List<Movie> movieList = new List<Movie>(); 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void but_Submit_Click(object sender, RoutedEventArgs e) 
     { 
      bool isGoodToAddNewMovie = true; 
      Movie newMovie = new Movie(); 
      newMovie.movieName = txtBox_MovieName.Text; 
      newMovie.onDVD = txtBox_DVD.Text; 
      newMovie.onBluRay = txtBox_BluRay.Text; 
      newMovie.genreType = txtBox_Genre.Text; 
      newMovie.directorName = txtBox_Director.Text; 
      newMovie.producerName = txtBox_Producer.Text; 
      newMovie.moveRating = txtBox_Rating.Text; 

      if (MovieUtility.isItDate(txtBox_ReleaseDate.Text)) 
      { 
       newMovie.releaseDate = MovieUtility.ConvertStringToDate(txtBox_ReleaseDate.Text); 
       txtBox_ReleaseDate.Background = new SolidColorBrush(Colors.LightGray); 
      } 
      else 
      { 
       txtBox_ReleaseDate.Background = new SolidColorBrush(Colors.Red); 
       isGoodToAddNewMovie = false; 
      } 

      if (MovieUtility.isItDate(txtBox_Length.Text)) 
      { 
       newMovie.movieLength = MovieUtility.ConvertStringToDate(txtBox_Length.Text); 
       txtBox_Length.Background = new SolidColorBrush(Colors.LightGray); 
      } 
      else 
      { 
       txtBox_Length.Background = new SolidColorBrush(Colors.Red); 
       MessageBox.Show("Please enter movie length in minutes."); 
       isGoodToAddNewMovie = false; 
      } 

      //ADD PERSON TO LIST 
      if (isGoodToAddNewMovie) 
      { 
       movieList.Add(newMovie); 
       dataGrid_Movies.ItemsSource = new List<Movie>(movieList); 
      } 
     } 
    } 
} 

И это вопрос:

if (MovieUtility.isItDate(txtBox_Length.Text)) 
{ 
    newMovie.movieLength = MovieUtility.ConvertStringToDate(txtBox_Length.Text); 
    txtBox_Length.Background = new SolidColorBrush(Colors.LightGray); 
} 
+0

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

+0

Это был метод, который я публиковал, я попытался преобразовать в int, но он не увенчался успехом. Что именно вы спрашиваете? –

+0

определение/подпись метода 'ConvertStringToDate()' –

ответ

1

Похоже, вы просто хотите, чтобы разобрать значение как int, не DateTime. Вы можете проверить значение первого, с помощью int.TryParse, который возвращает true если значение является допустимым числом:

int length; 

if (int.TryParse(txtBox_Length.Text, out length)) 
{ 
    newMovie.movieLength = length; 
    txtBox_Length.Background = new SolidColorBrush(Colors.LightGray); 
} 
else 
{ 
    txtBox_Length.Background = new SolidColorBrush(Colors.Red); 
    MessageBox.Show("Please enter movie length in minutes."); 
    isGoodToAddNewMovie = false; 
} 
+0

Спасибо! Это трюк! –

+2

@KevinWare, ознакомьтесь с Help -> Tour для этикета сайта. Когда решение найдено, проверьте его, чтобы другие виды использования знали, что он больше не является открытым. – DRapp

0

Похоже, вы хотите Int32.TryParse:

if (Int32.TryParse(txtBox_Length.Text, out newMovie.movieLength)) 
{ 
    txtBox_Length.Background = new SolidColorBrush(Colors.LightGray); 
} 
Смежные вопросы