참조를 NULL로 위임

Smithrnoff

대리자에 문제가 있으며을 참조하고 null있습니다.

먼저 행동 할 델리게이트를 정의합니다.

    public delegate void MandarComponente(int Componente);
    public event MandarComponente MandarComp;

드래그 앤 드롭 작업을 원하기 때문에 드래그 앤 드롭 코드의 중요한 내용을 입력하겠습니다.

        private void Capacitor_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) //This is a PictureBox Event
    {
        componente = 1;
        Capacitor.DoDragDrop(Capacitor.Image, DragDropEffects.Copy | DragDropEffects.Move);
    }

일단 가지고 있으면 이벤트에서 사용하겠습니다

public void tableLayoutPanel2_DragDrop(object sender, DragEventArgs e)
    {
        Point pl = new Point(this.Location.X + tableLayoutPanel2.Location.X + 10, this.Location.Y + tableLayoutPanel2.Location.Y + 32);
        int R = (int)((e.Y - pl.Y) / pictureBox1.Height);
        int C = (int)((e.X - pl.X) / pictureBox1.Width);
        Console.WriteLine("X=" + e.X + "Y=" + e.Y + " [" + C + ", " + R + "]");

        if (R == tableLayoutPanel2.RowCount) R--;
        if (C == tableLayoutPanel2.ColumnCount) C--;

        PictureBox pictureBox = (PictureBox)tableLayoutPanel2.GetControlFromPosition(C, R);

        if (R == 0 && C == 0 || R == 2 && C == 0 || R == 2 && C == 2 || R == 0 && C == 2)
        {
            MessageBox.Show("¡No puedes poner un componente ahí!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            pictureBox = null;
        }


        if (componente == 1 && pictureBox != null)
        {
                pictureBox.Image = Capacitor.Image;
                MandarComp(componente);
                MandarComp = new MandarComponente(CambiarTexto);

                if (R == 1 && C == 2 || R == 1 && C == 0)
                {
                    pictureBox.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
                }
        }

이 방법을 참조하고 있습니다.

    void CambiarTexto(int Componente)
    {
        if(Componente==1)
        {
            label5.Text = "Componente Seleccionado: CAPACITOR";
        }

    }

그러나의 부분에는 MandarCom(Componente)항상 예외가 NullReferenceException있습니다.

편집 : 기본적으로 내가하려는 것은 델리게이트가 MandarComponente(int Componente)저장 componente한 다음 CambiarTexto메서드 로 전송 하여 label5.Text.

젤기 우스

이벤트를 사용하려면 먼저 호출하기 전에 먼저 값을 지정해야합니다. 이는 할당 및 호출의 인덱스가 잘못되었음을 의미합니다. 다음과 같아야합니다.

MandarComp += CambiarTexto;//For event, += is used more offen than directly assignment.
MandarComp(Componente);

작동합니다.

또한 최신 버전의 C #을 사용 MandarComp?.Invoke()하는 경우 NullReferenceExcption을 피하기 위해 다음과 같이 작성할 수 있습니다 .

또한 델리게이트 및 이벤트의 기본적인 사용부터 시작하는 것이 좋습니다. 대리인이 소유자 클래스에서 사용되는 경우 이는 낭비입니다. 해당 메서드를 직접 호출하면 동일한 작업이 수행됩니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이벤트 및 null 참조를 위임합니다.

분류에서Dev

null 인 참조를 위해 eventhandler 구독

분류에서Dev

포인터에서 참조로 업그레이드-참조를 위해 NULL을 처리하는 방법

분류에서Dev

AVPlayerLayer 참조를 계층 구조 위로 전달

분류에서Dev

참조 범위를 기반으로 숫자 데이터 프레임을 해당 문자열로 변환

분류에서Dev

개체를 null 참조와 비교할 때 위치의 영향

분류에서Dev

개체를 null 참조와 비교할 때 위치의 영향

분류에서Dev

글로벌 네임 스페이스를 참조하는 방법

분류에서Dev

벡터를 다른 참조 프레임으로 변환

분류에서Dev

const 참조를 임시로 반환하면 로컬 const 참조와 다르게 동작합니까?

분류에서Dev

셀 참조를 기반으로 범위 내에 열 삽입

분류에서Dev

참조로 개체 전달 (범위를 벗어남)

분류에서Dev

변수로 범위 참조

분류에서Dev

참조 멤버 변수 초기화를위한 임시 포인터 역 참조

분류에서Dev

런타임에 하위 폴더의 참조가있는 어셈블리로드

분류에서Dev

디자인 타임 null 참조 오류

분류에서Dev

하위 이름 유효성 검사를위한 다른 경로의 참조

분류에서Dev

MariaDB는 타임 스탬프를 무작위로 null로 설정합니다.

분류에서Dev

Typescript에서 네임 스페이스를 Type으로 참조하는 방법

분류에서Dev

MongoDb Compass는 DB 참조를 임베디드 JSON으로 내보내기

분류에서Dev

단위 테스트-Null 참조 Exc

분류에서Dev

getRange ()에서 행 / 열 위치로 셀 참조를 사용할 수 있습니까?

분류에서Dev

참조 포인터를 함수 인수로 사용할 때의 위험

분류에서Dev

날짜를 참조하여 목록을 하위 요소로 나누기

분류에서Dev

R-Data.table-음수 위치를 사용하여 참조로 열 삭제

분류에서Dev

모듈 범위 변수를 함수 인수로 참조하는 방법

분류에서Dev

단일 셀 참조를 범위로 어떻게 바꿀 수 있습니까?

분류에서Dev

R-열 위치로 변수를 어떻게 참조합니까?

분류에서Dev

컴파일러 스위치를 기반으로 .NET 어셈블리 참조

Related 관련 기사

  1. 1

    이벤트 및 null 참조를 위임합니다.

  2. 2

    null 인 참조를 위해 eventhandler 구독

  3. 3

    포인터에서 참조로 업그레이드-참조를 위해 NULL을 처리하는 방법

  4. 4

    AVPlayerLayer 참조를 계층 구조 위로 전달

  5. 5

    참조 범위를 기반으로 숫자 데이터 프레임을 해당 문자열로 변환

  6. 6

    개체를 null 참조와 비교할 때 위치의 영향

  7. 7

    개체를 null 참조와 비교할 때 위치의 영향

  8. 8

    글로벌 네임 스페이스를 참조하는 방법

  9. 9

    벡터를 다른 참조 프레임으로 변환

  10. 10

    const 참조를 임시로 반환하면 로컬 const 참조와 다르게 동작합니까?

  11. 11

    셀 참조를 기반으로 범위 내에 열 삽입

  12. 12

    참조로 개체 전달 (범위를 벗어남)

  13. 13

    변수로 범위 참조

  14. 14

    참조 멤버 변수 초기화를위한 임시 포인터 역 참조

  15. 15

    런타임에 하위 폴더의 참조가있는 어셈블리로드

  16. 16

    디자인 타임 null 참조 오류

  17. 17

    하위 이름 유효성 검사를위한 다른 경로의 참조

  18. 18

    MariaDB는 타임 스탬프를 무작위로 null로 설정합니다.

  19. 19

    Typescript에서 네임 스페이스를 Type으로 참조하는 방법

  20. 20

    MongoDb Compass는 DB 참조를 임베디드 JSON으로 내보내기

  21. 21

    단위 테스트-Null 참조 Exc

  22. 22

    getRange ()에서 행 / 열 위치로 셀 참조를 사용할 수 있습니까?

  23. 23

    참조 포인터를 함수 인수로 사용할 때의 위험

  24. 24

    날짜를 참조하여 목록을 하위 요소로 나누기

  25. 25

    R-Data.table-음수 위치를 사용하여 참조로 열 삭제

  26. 26

    모듈 범위 변수를 함수 인수로 참조하는 방법

  27. 27

    단일 셀 참조를 범위로 어떻게 바꿀 수 있습니까?

  28. 28

    R-열 위치로 변수를 어떻게 참조합니까?

  29. 29

    컴파일러 스위치를 기반으로 .NET 어셈블리 참조

뜨겁다태그

보관