2015-09-07 3 views
-1

Я новичок в C# и у меня есть следующий вопрос/s:Получение значения из свойств в C#

DBOps.cs:

class DBOps() 
{ 
internal static void Update(DataGridView dataGridView1) 
     { 
      if (dataGridView1.SelectedRows.Count != 0) 
      { 
       var user = new User(); 
       user.Id = (int) dataGridView1.SelectedRows[0].Cells[0].Value; 
       user.Username = (string) dataGridView1.SelectedRows[0].Cells[1].Value; 
       user.FirstName = (string) dataGridView1.SelectedRows[0].Cells[2].Value; 
       user.LastName = (string) dataGridView1.SelectedRows[0].Cells[3].Value; 
       user.Email = (string) dataGridView1.SelectedRows[0].Cells[4].Value; 
       user.Password = (string) dataGridView1.SelectedRows[0].Cells[5].Value; 

       var updateForm = new UpdateForm(user); 
       var result = updateForm.ShowDialog(); 

       if (result == DialogResult.OK) 
       { 

       } 
       else if (result == DialogResult.Cancel) 
       { 

       } 
      } 
     } 
} 

User.cs:

class User 
    { 
     public int Id { get; set; } 
     public string Username { get; set; }  
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Email { get; set; } 
     public string Password { get; set; } 
    } 

UpdateForm.cs:

public partial class UpdateForm : Form 
    { 
     public UpdateForm(User user) 
     { 
      InitializeComponent(); 

      txtId.Text = user.Id.ToString(); 
      txtUser.Text = user.Username; 
      txtFName.Text = user.FirstName; 
      txtLName.Text = user.LastName; 
      txtEmail.Text = user.Email; 
      txtPass.Text = user.Password; 
     } 
//code 
} 

Значения в классе DBOps хранятся правильно, я проверил это. Теперь я хочу установить TextBoxes в UpdateForm со значениями из User.cs.

+0

В чем проблема? Вы хотите помочь в создании недвижимости? –

+0

@kailanjian: Я хочу взять значение из свойства. – MrSilent

+0

, если этот первый блок находится в методе или событии, тогда 'user' является локальным экземпляром, который существует только там. – Plutonix

ответ

1

Прежде всего, я предлагаю вам использовать Convert.ToInt32(), Convert.ToString() вместо литья, как, что в вашем вопросе.

, пожалуйста, проверьте доступность класса User

Вы можете проверить определение класса легко, нажав клавишу {F12} на клавиатуре, если вы используете Visual Studio.

Если классы не находятся в одном проекте, добавьте ссылку.

Если классы не находятся в том же пространстве имен, пожалуйста, добавьте строку using xxxxx;

Если вы все еще не можете получить значения, пожалуйста, изменить все свойства для общественности.

Наконец, я думаю, что вы можете получить значение, помещая эти строки коды:

txtUserID.Text = User.Id.ToString(); 
txtUserName.Text = User.UserName; 
txtFirstName.Text = User.FirstName; 
txtLastName.Text = User.LastName; 
txtEmail.Text = User.Email; 
txtPassword.Text = User.Password; 

Я не предлагаю вам показать пароль в текстовом поле кстати.

Пожалуйста, дайте мне знать, если у вас остались вопросы по C#

+0

Отличное объяснение для новичков в этом домене, спасибо, теперь понятно, и он работает так, как должен. – MrSilent

+0

Хотя, в целях обучения, не могли бы вы рассказать мне о различиях в использовании между моими призами и конверсиями? – MrSilent

+0

Привет @AlexandruMitu, пожалуйста, прочитайте эту статью из stackoverflow: http://stackoverflow.com/a/1608828/2884831 –

1

Вы просто получаете ссылку на класс пользователя, а затем получаете доступ к ним через свои объекты получения. Например:

User user = /* get reference to User */ 

textbox.Text = user.Username; 
+0

Если бы все было так просто, я бы не стал спрашивать об этом. Это дает мой user.Username = "". – MrSilent

1

Я не знаю, что вы пытаетесь сделать, но чтобы передать объект другому классу, вы можете использовать метод конструктора.

public class SecondObject 
{ 
    public SecondObject(User theuser) 
    { 
     textbox1.Text = theuser.Id 
     textbox2.text = theuser.Username 
     // ... 
    } 
} 

Чтобы использовать второй класс просто сделать:

var user = new User(); 

user.Id = (int) dataGridView1.SelectedRows[0].Cells[0].Value; 
user.Username = (string) dataGridView1.SelectedRows[0].Cells[1].Value; 
user.FirstName = (string) dataGridView1.SelectedRows[0].Cells[2].Value; 
user.LastName = (string) dataGridView1.SelectedRows[0].Cells[3].Value; 
user.Email = (string) dataGridView1.SelectedRows[0].Cells[4].Value; 
user.Password = (string) dataGridView1.SelectedRows[0].Cells[5].Value; 
SecondObject obj = new SecondObject(user);