2013-10-15 3 views
0

Это простое приложение, которое должно хранить запись информации о студенте. В форме есть текстовые поля для информации, такие как имя, курс и т. Д. И три кнопки «SET», «CLEAR» и «GET». Кнопка набора должна принимать пользовательский ввод и сохранять его как строку, кнопка CLEAR очищает все текстовые поля, а кнопка GET должна возвращать данные в текстовые поля.Как сохранить строку из текстового поля, а затем использовать эту строку в C#

namespace Project1 

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 



    public void SetBttn_Click(object sender, RoutedEventArgs e) 
    { 
     string firstname = FirstNameTxtBox.Text; 
     string lastname = LastNameTxtBox.Text; 
     string course = CourseTxtBox.Text; 
     string mno = MNoTxtBox.Text; 
     string yrmark = YrMarkTxtBox.Text; 
    } 

    private void ClrBttn_Click(object sender, RoutedEventArgs e) 
    { 
     FirstNameTxtBox.Text = String.Empty; 
     LastNameTxtBox.Text = String.Empty; 
     CourseTxtBox.Text = String.Empty; 
     MNoTxtBox.Text = String.Empty; 
     YrMarkTxtBox.Text = String.Empty; 
    } 

    private void GetBttn_Click(object sender, RoutedEventArgs e) 
    { 
     FirstNameTxtBox.Text = firstname; 
     LastNameTxtBox.Text = lastname; 
     CourseTxtBox.Text = course; 
     MNoTxtBox.Text = mno; 
     YrMarkTxtBox.Text = yrmark; 


    } 

    private void ShowBttn_Click(object sender, RoutedEventArgs e) 
    { 
     { 
      phd newWin = new phd(); 
      newWin.Show(); 
     } 
    } 




} 
} 
+0

Пожалуйста, вывесить ошибку вы получаете. – Chris

ответ

0

Вы действительно должны опубликовать ошибку, которую вы получаете. Но в любом случае проблема заключается в том, что вы объявляете свои переменные в SetBttn_Click, что означает, что они будут существовать только внутри этого метода. Это называется локальными переменными.

Чтобы сделать то, что вы пытаетесь вам необходимо объявить переменные, как поля в самой форме:

public partial class MainWindow : Window 
{ 
    private string firstname, lastname, course, mno, yrmark; 
    ... 

Таким образом, они будут распределены между всеми методами в своем классе. Я также предложил бы именовать их по-разному, чтобы отличать их от локальных переменных. Некоторые префикс имен с подчеркиванием, я предпочитаю что-то вроде m_FirstName.

+0

Спасибо, теперь это работает :) – Barboro37

2

Потому что вы создаете переменную внутри метода. В вашем методе Set вы создаете локальную переменную (для метода) и вы не можете ее прочитать в другом методе (Get), потому что эта переменная доступна только в методе Set.

Решение: Используйте переменную, определенную вне вашего метода, и храните и читайте с нее. Здесь я определяю переменную на уровне класса. Это доступно во всех методах. Вы можете установить значение в одном методе и прочитать значение в другом методе.

public partial class MainWindow : Window 
{ 
    private string _firstName; 
    public void SetBttn_Click(object sender, RoutedEventArgs e) 
    { 
    //Setting the value to the class level scoped variable. 
     _firstName = FirstNameTxtBox.Text; 
    } 
    private void GetBttn_Click(object sender, RoutedEventArgs e) 
    { 
    //Reading the value from the class level scoped variable. 
    FirstNameTxtBox.Text = _firstName ; 
    } 
} 
+0

Спасибо :) Отлично работает – Barboro37

+0

@ user2883982 Добро пожаловать. рад, что смогу помочь :) – Shyju

0

Проблема в том, что вам нужно установить свои строки вне вашей функции, чтобы там не было локально.

string firstname; 
string lastname; 
string course; 
string mno; 
string yrmark; 
public void SetBttn_Click(object sender, RoutedEventArgs e) 
    { 
     firstname = FirstNameTxtBox.Text; 
     lastname = LastNameTxtBox.Text; 
     course = CourseTxtBox.Text; 
     mno = MNoTxtBox.Text; 
     yrmark = YrMarkTxtBox.Text; 
    } 
0

Вы должны переместить декларацию строк из Methode:

// Declaration: 
private string firstname = ""; 
private string lastname = ""; 
private string course = ""; 
private string mno = ""; 
private string yrmark = ""; 

public MainWindow() 
{ 
    InitializeComponent(); 
} 

public void SetBttn_Click(object sender, RoutedEventArgs e) 
{ 
    firstname = FirstNameTxtBox.Text; 
    lastname = LastNameTxtBox.Text; 
    course = CourseTxtBox.Text; 
    mno = MNoTxtBox.Text; 
    yrmark = YrMarkTxtBox.Text; 
} 
Смежные вопросы