2015-04-14 4 views
1

Я пишу приложение C#, где я могу добавить студентов различных типов - нормального студента или студента академического общества или студента школьного искусства и культуры. В основной форме у меня есть 3 сетки данных (в одной из них участвуют академические студенты, один ученик из списка литературы и культуры, а другой - обычные ученики). Чтобы пользователь мог указать дополнительную информацию о студенте (если они будут студентом академического общества, или учеником в области искусства и культуры, или и тем и другим), откроется другая форма с просьбой добавить дополнительную информацию.Обновление элемента управления в открытой форме

После того, как информация была указана, я хотел бы воспользоваться этой информацией и добавить ее в соответствующую сетку данных, другими словами, обновить сетку данных в основной форме.

Как я думал, что решить эту идею:

  1. Создать метод в основной форме, чтобы добавить новую запись в сетку данных
  2. Сохранить основную форму объекта в объект Form
  3. Имейте метод, который добавит новую строку данных в объект формы, упомянутый на шаге 2
  4. Обновите открытую в настоящий момент основную форму с сохраненным объектом формы.

Я пытался делать выше, и я получаю сообщение об ошибке:

Error 1 Inconsistent accessibility: parameter type 'ONT2000_Practical_05.AcademicSocieties' is less accessible than method 'ONT2000_Practical_05.Form1.addAcademicStudentRow(ONT2000_Practical_05.AcademicSocieties)' c:\users\okuhle\documents\visual studio 2013\Projects\ONT2000 Practical 05\ONT2000 Practical 05\Form1.cs 35 21 ONT2000 Practical 05

У меня есть 3-х классов - AcademicSocieties, ArtsAndCultureSociety и студент ... как AcademicSocieties и ArtsAndCultureSociety наследуют класс Student. Ниже приведен код для классов:

THE STUDENT CLASS: 

    using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ONT2000_Practical_05 
{ 
    public class Student 
    { 
     private String studentNumber; 
     private String studentName; 
     private String studentDegree; 

     public Student(string number, string name, string degree) 
     { 
      studentNumber = number; 
      studentName = name; 
      studentDegree = degree; 
     } 

     public String getStudentName() 
     { 
      return studentName; 
     } 

     public String getStudentNumber() 
     { 
      return studentNumber; 
     } 

     public String getStudentDegree() 
     { 
      return studentDegree; 
     } 

    } 
} 

ACADEMICSSOCIETY КЛАСС:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ONT2000_Practical_05 
{ 
    public class AcademicSocieties : Student 
    { 
     private String courseCode; 
     private String societyName; 

     public AcademicSocieties(String studentName, String studentNumber, String studentDegree, String courseCode, String societyName) : base(studentNumber, studentName, studentDegree) 
     { 
      this.courseCode = courseCode; 
      this.societyName = societyName; 
     } 

     public String getCourseCode() 
     { 
      return courseCode; 
     } 

     public String getSocietyName() 
     { 
      return societyName; 
     } 
    } 
} 

ARTSANDCULTURE ОБЩЕСТВО CLASS

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ONT2000_Practical_05 
{ 
    class ArtsAndCultureSociety : Student 
    { 
     private int experienceLevel; 
     private int competitionWins; 
     private String societyName; 
     private Boolean colours; 

     public ArtsAndCultureSociety(int level, int wins, string societyName, String studentNumber, String studentName, String studentDegree) : base(studentNumber, studentName, studentDegree) 
     { 
      experienceLevel = level; 
      competitionWins = wins; 
      this.societyName = societyName; 
     } 
    } 
} 

ОСНОВНАЯ ФОРМА:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace ONT2000_Practical_05 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void academicSocietiesToolStripMenuItem_Click(object sender, EventArgs e) 
     { 

     } 

     private void degreeLabel_Click(object sender, EventArgs e) 
     { 

     } 

     private void exitApplicationToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      Environment.Exit(0); 
     } 

     public void addAcademicStudentRow(AcademicSocieties thisStudent) //This is where the Error Occurs 
     { 
      academicSocietiesDataGrid.Rows.Add(thisStudent.getStudentName(), thisStudent.getSocietyName(), thisStudent.getCourseCode()); 
     } 

     private void addStudentButton_Click(object sender, EventArgs e) 
     { 
      String studentName = ProgramFunctions.validateTextBoxData(studentNameTextBox); 
      String studentNumber = ProgramFunctions.validateStudentNumber(studentNumberTextBox); 
      String studentDegree = ProgramFunctions.validateTextBoxData(degreeTextBox); 

      if (studentName.Equals(null) || studentNumber.Equals(null) || studentDegree.Equals(null) || studentDegree.Equals("null")) //Error 1 is on this line 
      { 
       ProgramFunctions.displayMessage("Data Integrity Error", "As a result of one or more fields failing data validation, this application will not continue processing data"); 
      } else 
      { 
       if (artsAndCultureCheckBox.Checked && academicCheckBox.Checked) 
       { 
        Student newStudent = new Student(studentNumber, studentName, studentDegree); 
        StudentData.setCurrentStudent(newStudent); 
        ProgramFunctions.saveCurrentForm(this); 
        GeneralStudentSocietyForm generalForm = new GeneralStudentSocietyForm(); 
        generalForm.Visible = true; 
        generalForm.Focus(); 

       } else if (academicCheckBox.Checked) 
       { 
        Student newStudent = new Student(studentNumber, studentName, studentDegree); 
        StudentData.setCurrentStudent(newStudent); 
        ProgramFunctions.saveCurrentForm(this); 
        AcademicSocietyForm academics = new AcademicSocietyForm(); 
        academics.Visible = true; 
        academics.Focus();  
       } else if (artsAndCultureCheckBox.Checked) 
       { 
        Student newStudent = new Student(studentNumber, studentName, studentDegree); 
        StudentData.setCurrentStudent(newStudent); 
        ProgramFunctions.saveCurrentForm(this); 
        ArtsAndCultureForm artsAndCulture = new ArtsAndCultureForm(); 
        artsAndCulture.Visible = true; 
        artsAndCulture.Focus(); 
       } else 
       { 
        Student newStudent = new Student(studentNumber, studentName, studentDegree); 
        StudentData.addNewStudent(newStudent); 
        ProgramFunctions.displayMessage("Student Added", "A New Student has successfully been added to the database. Click OK to continue"); 

        studentDataDataGird.Rows.Add(newStudent.getStudentName(), newStudent.getStudentNumber(), newStudent.getStudentDegree()); 
       } 
      } 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      ProgramFunctions.addNewAcademicSociety("Accounting Society"); 
      ProgramFunctions.addNewAcademicSociety("Law Student Society"); 
      ProgramFunctions.addNewAcademicSociety("Science Student Society"); 
      ProgramFunctions.addNewAcademicSociety("Information Technology Student Society"); 
      ProgramFunctions.addNewAcademicSociety("Business Science Student Society"); 

      ProgramFunctions.addNewArtsAndCultureSociety("Choir Society"); 
      ProgramFunctions.addNewArtsAndCultureSociety("Hip Hop Society"); 
      ProgramFunctions.addNewArtsAndCultureSociety("Anime Society"); 
      ProgramFunctions.addNewArtsAndCultureSociety("The Hockey Society"); 
     } 

     private void studentDataDataGird_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 

     } 

     public void academicSocietiesDataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 

     } 
    } 
} 

THE PROGRAMFUNCTIONS Класс (это w здесь я храню объект формы):

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace ONT2000_Practical_05 
{ 
    class ProgramFunctions 
    { 
     private static List<String> academicSocieties = new List<String>(); 
     private static List<String> artsAndCultureSocieties = new List<String>(); 

     private static Form1 formObject; 

     public static void saveCurrentForm(Form1 formData) 
     { 
      formObject = formData; 
     } 

     public static void academicStudentDataGridRow(AcademicSocieties newStudent) 
     { 
      formObject.addAcademicStudentRow(newStudent); 
     } 

     public static Form1 updateMainForm() 
     { 
      return formObject; 
     } 

     public static void addNewAcademicSociety(String societyName) 
     { 
      academicSocieties.Add(societyName); 
     } 

     public static void addNewArtsAndCultureSociety(String societyName) 
     { 
      artsAndCultureSocieties.Add(societyName); 
     } 

     public static void displayMessage(String title, String Message) 
     { 
      MessageBox.Show(Message, title); 
     } 

     public static String validateTextBoxData(TextBox thisTextBox) 
     { 
      if (thisTextBox.Text.Equals(null) || thisTextBox.Text.Equals("") || thisTextBox.Text.Equals(" ")) 
      { 
       displayMessage("Empty Data Detected!", "You may not specify empty data for the student"); 
       return null; 
      } else 
      { 
       thisTextBox.Text = thisTextBox.Text.Trim(); 
       thisTextBox.Text = thisTextBox.Text.ToUpper(); 
       return thisTextBox.Text; 
      } 
     } 

     public static String getSelectedItem(ComboBox thisComboBox) 
     { 
      return thisComboBox.SelectedItem.ToString(); 
     } 

     public static int getArtsAndCultureCount() 
     { 
      return artsAndCultureSocieties.Count; 
     } 

     public static int getAcademicSocietyCount() 
     { 
      return academicSocieties.Count; 
     } 

     public static String getAcademicSociety(int index) 
     { 
      return academicSocieties[index]; 
     } 

     public static String getArtsAndCultureSociety(int index) 
     { 
      return artsAndCultureSocieties[index]; 
     } 

     public static String validateStudentNumber(TextBox studentNumberTextBox) 
     { 
      if (studentNumberTextBox.Text.Equals(null) || studentNumberTextBox.Text.Equals("") || studentNumberTextBox.Text.Equals(" ")) 
      { 
       displayMessage("Empty Data Detected!", "You did not input any data...Please be sure you do specify some data"); 
       return null; 
      } else 
      { 
       if (!studentNumberTextBox.Text.StartsWith("s")) 
       { 
        displayMessage("Invalid Student Number", "You have entered an invalid student number. Please be sure this student number follows the correct format. The student number must begin with a 's' character. "); 
        return null; 
       } 

       if (studentNumberTextBox.Text.Length != 10) 
       { 
        displayMessage("Invalid Student Number", "The student number specified may not be longer than 10 characters"); 
        return null; 
       } 

       return studentNumberTextBox.Text; 
      } 
     } 

    } 
} 
+1

Путь путь слишком много информации. Разве вы не можете просто сказать, что не так, и дать нам только соответствующий код? –

+0

добавьте вашу форму1.Designer.cs в вопрос –

+0

Спасибо за отзыв ... Я открыл Form1.Designer, и я изменил необходимые объекты управления формой на общедоступные – koeks525

ответ

0

Может быть, вам не хватает модификатор доступа «общественности» в некоторых из ваших определений классов? Если вы не добавите публики до ArtsAndCultureSociety, она будет закрыта.

0

изменить модификатор доступа класса ProgramFunctions, ArtsAndCultureSociety для общественности.

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