2016-07-22 59 views
0

对于C#和编程,我还是比较陌生,所以我不确定我是否能够正确地提出这个问题,但这里就是这样。我目前正在为使用Visual Studio的C#专门开发一个类,并且我们给出的任务是使用老师提供的WPF应用程序,然后创建一个.cs文件来输入我们的代码以使应用程序正常运行。我在创建控制台应用程序以及仅使用VB的WPF应用程序方面取得了成功,但我并不完全确定如何使这两个概念相互协作。使用.cs的WPF应用程序

到目前为止,我的代码如下:

MainWindow.xaml(教师提供):

<Window x:Class="CreateClassesObjs.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:CreateClassesObjs" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> 
<Grid> 
    <ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="66,37,0,0" VerticalAlignment="Top" Width="164" IsDropDownOpen="True"/> 
    <Button x:Name="button" Content="Select this course" HorizontalAlignment="Left" Margin="283,39,0,0" VerticalAlignment="Top" Width="166" Click="button_Click"/> 
    <ListBox x:Name="listBox" HorizontalAlignment="Left" Height="69" Margin="66,233,0,0" VerticalAlignment="Top" Width="164"/> 
    <Label x:Name="label" Content="Please select a course " HorizontalAlignment="Left" Margin="66,7,0,0" VerticalAlignment="Top" Width="383"/> 
    <Label x:Name="label1" Content="You have selected these courses:" HorizontalAlignment="Left" Margin="66,202,0,0" VerticalAlignment="Top" Width="176"/> 

</Grid> 

MainWindow.xaml.cs(教师提供):

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace CreateClassesObjs 
{ 
/// <summary> 
/// Interaction logic for MainWindow.xaml 
/// </summary> 
public partial class MainWindow : Window 
{ 

    Course choice; 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     Course course1 = new Course(); 
     Course course2 = new Course(); 
     Course course3 = new Course(); 
     Course course4 = new Course(); 
     Course course5 = new Course(); 
     Course course6 = new Course(); 
     Course course7 = new Course(); 

     course1.setName("IT 145"); 
     course2.setName("IT 200"); 
     course3.setName("IT 201"); 
     course4.setName("IT 270"); 
     course5.setName("IT 315"); 
     course6.setName("IT 328"); 
     course7.setName("IT 330"); 



     this.comboBox.Items.Add(course1); 
     this.comboBox.Items.Add(course2); 
     this.comboBox.Items.Add(course3); 
     this.comboBox.Items.Add(course4); 
     this.comboBox.Items.Add(course5); 
     this.comboBox.Items.Add(course6); 
     this.comboBox.Items.Add(course7); 
    } 

    private void button_Click(object sender, RoutedEventArgs e) 
    { 
     choice = (Course)(this.comboBox.SelectedItem); 
     this.listBox.Items.Add(choice); 
    } 

} 
} 

And Course.cs(我已经开始编写的代码):

#region Using directives 
using System; 
using System.Collections.Generic; 
using System.Text; 
#endregion 
namespace CreateClassesObjs 
{ 
public partial class Course :MainWindow 
{ 
    //Field 
    private string courseName; 

    //Method to set courseName to string value 
    public void setName(string newName) 
    { 
     courseName = newName; 
    } 

    //overrides string ToString 
    /*public override string ToString() 
    { 
     // this method returns the name field 
     Course course1 = new Course(); 
     Console.WriteLine(course1.courseName); 

    }*/ 
} 
} 

我一直在试图从我可以找到的教程中找到它,但我觉得我只是混淆了它。我不是在寻找完整的答案,而是朝正确的方向推动。先谢谢你!

+3

你的问题是什么? – SLaks

+2

为什么'Course'继承'MainWindow'? – SLaks

+1

我希望这个课程不是为了教WPF的任何人......教官的代码只是让我死在内部。 – Guttsy

回答

0

你真的很接近这个工作。你只需要改变你的ToString方法。我猜你现在看到的是这样的:

example

如果您没有看到这个会,因为你不能编译,我建议你做一个新的cs文件为您的课程对象,而不是将它嵌入你的MainWindow课程中。有无理由partial类在这里。

WPF目前不知道如何在ComboBox中显示课程。在正常的 WPF应用程序中,可以定义一个DataTemplate来告诉ComboBox如何呈现课程。感谢你的老师所创造的憎恶,我们没有那种奢侈。相反,你需要在你的ToString方法中返回一些东西来安抚它。我会让你弄清楚是什么。

(请注意:这是一个如何不该做WPF,甚至在入门级的一个最好的例子不是你用任何方法故障)

0

我希望这可以帮助,但这里是我如何能让程序起作用。你需要定义你的getters和setters,并且你的新课程打印出一些东西。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace CreateClassesObjs 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 

     Course choice; 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      Course course1 = new Course("IT 145"); 
      Course course2 = new Course("IT 200"); 
      Course course3 = new Course("IT 201"); 
      Course course4 = new Course("IT 270"); 
      Course course5 = new Course("IT 315"); 
      Course course6 = new Course("IT 328"); 
      Course course7 = new Course("IT 330"); 

      course1.setName("IT 145"); 
      course2.setName("IT 200"); 
      course3.setName("IT 201"); 
      course4.setName("IT 270"); 
      course5.setName("IT 315"); 
      course6.setName("IT 328"); 
      course7.setName("IT 330"); 

      this.comboBox.Items.Add(course1); 
      this.comboBox.Items.Add(course2); 
      this.comboBox.Items.Add(course3); 
      this.comboBox.Items.Add(course4); 
      this.comboBox.Items.Add(course5); 
      this.comboBox.Items.Add(course6); 
      this.comboBox.Items.Add(course7); 
     } 

     private void button_Click(object sender, RoutedEventArgs e) 
     { 
      choice = (Course)(this.comboBox.SelectedItem); 
      this.listBox.Items.Add(choice); 
     } 

     class Course 
     { 
      private string name = ""; 


      public Course(string name) 
      { 
       this.name = name; 
      } 

      public void setName(string name) 
      { 
       this.name = name; 
      } 

      public string getName() 
      { 
       return name; 
      } 

      public override string ToString() 
      { 
       return getName(); 
      } 
     } 
    } 
}