C # 창 창에서 개체를 전달한 후 개체 속성에 액세스 할 수 없습니다.

페르난도 코시오

그래서 저는 SQL 데이터베이스에 연결된 인벤토리를 처리하는 애플리케이션을 코딩하고 있습니다. 저는 앱의 "관리자"쪽을 코딩하고 있으며 중요한 작업의 경우 변경 사항을 확인하기 위해 관리자에게 비밀번호를 요청합니다. 그러나 일단 객체 속성에 액세스하려고하면 그렇게 할 방법을 찾을 수 없습니다. 단계별로 설명하겠습니다.

public class Usuario
{
    public int id { get; set; }
    public String Log { get; set; }
    public String Pwd { get; set; }
    public String User { get; set; }
    public Boolean Activo { get; set; }
    public Boolean Admin { get; set; }
    public Boolean Reportes { get; set; }

    public Usuario() { }

    public Usuario(int id, string User, bool Activo, bool Admin, bool Reports)
    {
        this.id = id;
        this.User = User;
        this.Activo = Activo;
        this.Admin = Admin;
        this.Reportes = Reportes;
    }
}

이것이 제가 만든 User 클래스입니다. 그런 다음 응용 프로그램이 시작되면 코드가 다음과 같은 암호 창이 있습니다.

public Pwd()
{
    InitializeComponent();
}
public Usuario UserA;

private void Button_Click(object sender, RoutedEventArgs e)
{
    String res;
    Conexion c = new Conexion();
    res = c.Password(txUsuario.Text, txPassword.Text);
    if (res == "1")
    {
        UserA = (Usuario)usuarioActual(txUsuario.Text, txPassword.Text);
        if (UserA.Activo)
        {
            Menu m = new Menu();
            Menu.User = UserA;
            m.Show();
            this.Hide();
        }
        else
        {
            MessageBox.Show("Usuario no está activo");
        }
    }
    else
        MessageBox.Show("Usuario o contraseña incorrectos");        
}

public static Object usuarioActual(String user, String pass)
{
    int id;
    String User;
    Boolean Activo;
    Boolean Admin;
    Boolean Reporte;

    id = Id(user, pass);
    User = nombreUser(user, pass);
    Activo = estaActivo(user,pass);
    Admin = esAdmin(user, pass);
    Reporte = Reportes(user, pass);

    Usuario Actual = new Usuario(id, User, Activo, Admin, Reporte);

    return Actual;
}

그래서 여기서 가장 중요한 것은 Public "UserA"가 있다는 것입니다. "usuarioActual"메소드는 "새"사용자를 생성하고 클래스의 공용 UserA에 저장합니다.

그런 다음 사용자와 암호가 정확하면 다음 창을 열고 사용자를 새 창 사용자와 동일하게 설정합니다. 다음과 같이 :

this.Hide();
Menu m = new Menu();
m.Show();
Menu.User = UserA;

따라서 사용자의 암호를 사용하려는 창에 도달 할 때까지 창 사이에서 사용자를 계속 "바운스"합니다.

public Alta()
{
    InitializeComponent();
}

public static Usuario UserA;
bool Activo = true;
bool Admin = false;
bool Reportes = true;
bool cambio = false;

private void btAlta_Click(object sender, RoutedEventArgs e)
{
    String res;
    if (Campos())
    {
        res = Interaction.InputBox("Está por realizar un alta, para confirmarla escriba su contraseña:", "Confirmación");
        if (res.Equals(UserA.Pwd.ToString()))
        {
            altaUser(tbLogin, tbPass, tbNombre, Activo, Admin, Reportes);
            MessageBox.Show("Usuario agregado satisfactoriamente");
            cambio = true;
        }
        else MessageBox.Show("Contraseña incorrecta intente de nuevo");
    }
    else
        MessageBox.Show("Existe algún error en los campos o quedaron vacíos");
}

그래서 여기에 큰 문제가 있습니다. 사용자가 입력 상자에서 제공 한 응답과 "User".pwd 속성을 비교하고 싶습니다. 나는 이미 시도했다 :

if (res.Equals(UserA.Pwd.ToString()))
if (res.Equals(UserA.Pwd))
if (res == (UserA.Pwd.ToString())
if (res == UserA.Pwd)

그러나 모든 경우에 "개체 참조가 개체 인스턴스로 설정되지 않음"오류가 발생합니다.

내 개체를 "메뉴"창에 처음 전달한 이후로 개체가 전달되고 있음을 알고 있습니다. 사용자가 관리자인지 아닌지 확인하기 위해 사용합니다.

public Menu()
{
    InitializeComponent();          
}
public static Usuario User;
private void button4_Click(object sender, RoutedEventArgs e)
{
    if (User.Admin)
    {
        PreAdmin a = new PreAdmin();
        PreAdmin.UserB = User;
        a.Show();
        this.Hide();
    }
    else
        MessageBox.Show("El usuario actual no tiene permiso de administrador");
}

그리고 내가 사용한다면

MessageBox.Show(UserA.ToString());

이것은 보여준다:

WpfApplication_Almacen.Usuario

누군가 내 오류 / 내가해야하는 방법을 발견하면 감사하겠습니다. 이제 몇 시간 동안 느려졌습니다.

public PreAdmin()
{
    InitializeComponent();
}

public static Usuario UserB;

private void button_Click(object sender, RoutedEventArgs e)
{
    Alta a = new Alta();
    Alta.UserA = UserB;
    a.Show();
    this.Hide();
}

따라서 순서는 다음과 같습니다 Usuario.-> Pwd-> Menu-> Pre-admin->Alta

클래스 PwdUsario x = new Usuario내 코드의 어떤 부분에서도 다시 발생하지 않습니다. 당신이 볼 수 그러나 내가 사용할 수 User.AdminMenu하지만 액세스 할 수있는 방법을 찾을 수없는 User.PwdAlta클래스

프라 티

문제가 해결되기를 바랍니다.

첫째 우선, 재정 ToString()에 대한Usuario

public class Usuario
{
    public int id { get; set; }
    public String Log { get; set; }
    public String Pwd { get; set; }
    public String User { get; set; }
    public Boolean Activo { get; set; }
    public Boolean Admin { get; set; }
    public Boolean Reportes { get; set; }

    public Usuario() { }

    public Usuario(int id,string User, bool Activo, bool Admin, bool Reportes)
    {
        this.id = id;
        this.User = User;
        this.Activo = Activo;
        this.Admin = Admin;
        this.Reportes = Reportes;
    }

    public override string ToString()
    {
        return string.Format(
            "User ID: {1}{0} at {0}Name: {2}{0}Activo: {3}",
            Environment.NewLine,
            this.id,
            this.User,
            this.Activo);
    }
}

이제 객체 참조 문제에 대해. 나는 당신이 저장 한 볼 Userio에 대한 정적 변수에 개체 Menu에서 Menu.User. 내 인식이 정확하기를 바라며 다음 btAlta_Click과 같이 편집 할 수 있습니다 .

private void btAlta_Click(object sender, RoutedEventArgs e)
{
    String res;

    if (Campos())
    {
        res = Interaction.InputBox("Está por realizar un alta, para confirmarla escriba su contraseña:", "Confirmación");

        // I would suggest to add this line of code
        if(UserA == null)
        {
            UserA = Menu.User;
        }

        if (res.Equals(UserA.Pwd.ToString()))
        {
            altaUser(tbLogin, tbPass, tbNombre, Activo, Admin, Reportes);
            MessageBox.Show("Usuario agregado satisfactoriamente");
            cambio = true;
        }
        else MessageBox.Show("Contraseña incorrecta intente de nuevo");
    }
    else
        MessageBox.Show("Existe algún error en los campos o quedaron vacíos");
}

또는 다음과 같이 속성을 편집 할 수 있습니다 Alta.

public static Usuario UserA 
{ 
    get 
    {
        return Menu.User;
    }
}

두 가지 솔루션 중 하나가 적합합니다.

Pwd를 설정하지 않은 것을 보지 못했습니다!

public static Object usuarioActual(String user, String pass)
{
    int id;
    String User;
    Boolean Activo;
    Boolean Admin;
    Boolean Reporte;

    id = Id(user, pass);
    User = nombreUser(user, pass);
    Activo = estaActivo(user,pass);
    Admin = esAdmin(user, pass);
    Reporte = Reportes(user, pass);

    Usuario Actual = new Usuario(id, User, Activo, Admin, Reporte);

    // You need to add this:
    Actual.Pwd = pass;

    return Actual;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

삭제 된 개체에 액세스 할 수 없습니다. 개체 이름 : 'Dispose 후 액세스 한 DataContext

분류에서Dev

개체 속성 내에서 Mobx 개체에 액세스 할 수 없습니다.

분류에서Dev

Angular에서 개체를 반환 한 후 코드에 액세스 할 수 없습니다.

분류에서Dev

codeigniter : 개체 속성에 액세스 할 수 없습니다.

분류에서Dev

JavaScript 개체 속성에 액세스 할 수 없습니다.

분류에서Dev

JSON 개체 속성에 액세스 할 수 없습니다.

분류에서Dev

개체의 속성에 액세스 할 수 없습니다.

분류에서Dev

모달 구성 요소에 소품을 전달한 후 개체 내부의 배열에 액세스 할 수 없습니다.

분류에서Dev

wpf에서 창을 전환 한 후 제어 항목에 액세스 할 수 없습니다.

분류에서Dev

object.create (baseObject) 후에 JavaScript가 동일한 개체 메서드에 액세스 할 수 없습니다.

분류에서Dev

Javascript의 개체에서 속성에 액세스 할 수 없습니다.

분류에서Dev

jQuery AJAX 호출에서 개체 속성에 액세스 할 수 없습니다.

분류에서Dev

YQL 문에서 JSON 개체의 속성에 액세스 할 수 없습니다.

분류에서Dev

Controller에서 개체의 속성에 액세스 할 수 없습니다.

분류에서Dev

각도 서비스의 개체 속성에 액세스 할 수 없습니다.

분류에서Dev

액체 개체 속성에 액세스 할 수 없음 (Jekyll)

분류에서Dev

서비스 개체에 매개 변수를 전달할 수 없습니다.

분류에서Dev

개체의 상속 된 속성에 액세스 할 수 없습니다.

분류에서Dev

인코딩 후 개체의 속성에 액세스 할 수 없음 (충돌)

분류에서Dev

React App 만들기-테스트 실행 전에 창 개체를 설정할 수 없습니다.

분류에서Dev

Javascript 전역 개체는 함수 내에서 액세스 할 수 없습니다.

분류에서Dev

내 개체의 속성에 액세스 할 수 있지만 함수에는 액세스 할 수 없습니다.

분류에서Dev

개체의 구성원에 액세스 할 수 없습니다.

분류에서Dev

PHP에서 JSON 개체에 액세스 할 수 없습니다.

분류에서Dev

Vuex 저장소 개체의 속성에 액세스 할 수 없습니다.

분류에서Dev

Typescript의 개체 속성 값에 액세스 할 수 없습니다.

분류에서Dev

지시문 내부의 개체 속성에 액세스 할 수 없습니다.

분류에서Dev

ActiveRecord 개체에 액세스 할 수 있지만 해당 속성에는 액세스 할 수 없습니다.

분류에서Dev

VB.NET에서 .IsDisposed ()를 확인한 후 "삭제 된 개체에 액세스 할 수 없습니다"오류가 발생합니다.

Related 관련 기사

  1. 1

    삭제 된 개체에 액세스 할 수 없습니다. 개체 이름 : 'Dispose 후 액세스 한 DataContext

  2. 2

    개체 속성 내에서 Mobx 개체에 액세스 할 수 없습니다.

  3. 3

    Angular에서 개체를 반환 한 후 코드에 액세스 할 수 없습니다.

  4. 4

    codeigniter : 개체 속성에 액세스 할 수 없습니다.

  5. 5

    JavaScript 개체 속성에 액세스 할 수 없습니다.

  6. 6

    JSON 개체 속성에 액세스 할 수 없습니다.

  7. 7

    개체의 속성에 액세스 할 수 없습니다.

  8. 8

    모달 구성 요소에 소품을 전달한 후 개체 내부의 배열에 액세스 할 수 없습니다.

  9. 9

    wpf에서 창을 전환 한 후 제어 항목에 액세스 할 수 없습니다.

  10. 10

    object.create (baseObject) 후에 JavaScript가 동일한 개체 메서드에 액세스 할 수 없습니다.

  11. 11

    Javascript의 개체에서 속성에 액세스 할 수 없습니다.

  12. 12

    jQuery AJAX 호출에서 개체 속성에 액세스 할 수 없습니다.

  13. 13

    YQL 문에서 JSON 개체의 속성에 액세스 할 수 없습니다.

  14. 14

    Controller에서 개체의 속성에 액세스 할 수 없습니다.

  15. 15

    각도 서비스의 개체 속성에 액세스 할 수 없습니다.

  16. 16

    액체 개체 속성에 액세스 할 수 없음 (Jekyll)

  17. 17

    서비스 개체에 매개 변수를 전달할 수 없습니다.

  18. 18

    개체의 상속 된 속성에 액세스 할 수 없습니다.

  19. 19

    인코딩 후 개체의 속성에 액세스 할 수 없음 (충돌)

  20. 20

    React App 만들기-테스트 실행 전에 창 개체를 설정할 수 없습니다.

  21. 21

    Javascript 전역 개체는 함수 내에서 액세스 할 수 없습니다.

  22. 22

    내 개체의 속성에 액세스 할 수 있지만 함수에는 액세스 할 수 없습니다.

  23. 23

    개체의 구성원에 액세스 할 수 없습니다.

  24. 24

    PHP에서 JSON 개체에 액세스 할 수 없습니다.

  25. 25

    Vuex 저장소 개체의 속성에 액세스 할 수 없습니다.

  26. 26

    Typescript의 개체 속성 값에 액세스 할 수 없습니다.

  27. 27

    지시문 내부의 개체 속성에 액세스 할 수 없습니다.

  28. 28

    ActiveRecord 개체에 액세스 할 수 있지만 해당 속성에는 액세스 할 수 없습니다.

  29. 29

    VB.NET에서 .IsDisposed ()를 확인한 후 "삭제 된 개체에 액세스 할 수 없습니다"오류가 발생합니다.

뜨겁다태그

보관