WinForms의 DataGridView에 int [] 또는 List <int>의 양방향 데이터 바인딩

Ferdinandutkin

이 솔루션은 dgv를 채우는 데 도움이되지만 익명 유형이 변경 불가능하기 때문에 이러한 그리드는 편집 할 수 없지만 그렇지 않으면 양방향 바인딩에 도움이 될 것이라고 생각하지 않습니다.

    List<int> values = GetValues();
    var dataGridView = new DataGridView();
    dataGridView.DataSource =  values.Select(el => new { Value = el }).ToList(); 

래퍼 클래스를 사용하면 셀을 편집 할 수 있지만 변경 사항이 원래 컬렉션에 반영되지 않습니다.

    public class Wrapper<T>
    {
        public T Value { get; set; }
        public Wrapper(T value) => Value = value;
    }
    ...
    dataGridView.DataSource = new BindingList<Wrapper<int>>(values.Select(value => new Wrapper<int>(value)).ToList());

그렇다면 어떻게 작동합니까?

Reza Aghaei

양방향 데이터 바인딩은 데이터 소스의 변경 알림을 기반으로 작동합니다. 여기에 데이터 소스는 List<int>, 어느 쪽 List<T>int따라서 양방향 데이터 바인딩이 여기에 이해가되지 않습니다, 변경 통지를 발생시킵니다.

BindingList<int>with의 양방향 데이터 바인딩을 구현하려는 경우 다음 작업을 수행 DataGridView할 수 있습니다.

BindingList<int> originalBindingList;
private void Form1_Load(object sender, EventArgs e)
{
    originalBindingList = new BindingList<int>(new List<int> { 1, 2, 3 });
    dataGridView1.DataSource = new ListDataSource<int>(originalBindingList);
}

그때:

  • DataGridView값이 Value포함 된 열과 행 이 표시 originalBindingList됩니다.
  • 값을 변경 DataGridView하면 값 originalBindingList이 변경됩니다.
  • originalBindingList코드에서 값을 변경하면 값 DataGridView이 새로 고쳐집니다.

다음은 ListDataSource입니다.

public class ListDataSource<T> : BindingSource
{
    public ListDataSource(BindingList<T> original)
    {
        for (int i = 0; i < original.Count; i++)
        {
            this.Add(new Item(original, i));
        }
        original.ListChanged += (obj, args) =>
            this.OnListChanged(new ListChangedEventArgs(
                args.ListChangedType, args.NewIndex));
    }
    private class Item : INotifyPropertyChanged
    {
        IList<T> source;
        int index;
        public Item(IList<T> source, int index)
        {
            this.source = source;
            this.index = index;
        }
        public T Value
        {
            get { return source[index]; }
            set
            {
                source[index] = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value"));
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
    }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

양방향 바인딩에는 데이터 그리드의 경로 또는 XPath 오류가 필요합니다.

분류에서Dev

angularjs에서 부분 간의 양방향 데이터 바인딩

분류에서Dev

Int 속성을 WPF의 Enum에 데이터 바인딩

분류에서Dev

List <T>의 데이터를 DatagridView에 바인딩

분류에서Dev

List <dynamic>을 C # Windows 양식의 DataGridview에 바인딩하는 방법

분류에서Dev

AngularJS의 C3.js에서 양방향 데이터 바인딩

분류에서Dev

* ngFor의 양방향 데이터 바인딩

분류에서Dev

각도 js의 양방향 데이터 바인딩

분류에서Dev

활동 간의 양방향 데이터 바인딩

분류에서Dev

Winforms 컨트롤에 바인딩 된 큰 데이터 소스에서 dbcontext의 크기를 제한하는 방법

분류에서Dev

사용자 정의보기에 양방향 데이터 바인딩의 사용자 지정 속성

분류에서Dev

양방향 데이터 바인딩에 의해 맵 내부의 요소가 변경 될 때 알림 받기

분류에서Dev

AngularJS의 양방향 데이터 바인딩에 대한 간단한 실용적인 예

분류에서Dev

AngularJS의 양방향 데이터 바인딩에 대한 간단한 실용적인 예

분류에서Dev

WindowBuilder의 양방향 데이터 바인딩이 작동하지 않는 것 같습니다.

분류에서Dev

Windows 양식의 DataGridView를 목록에 바인딩 <List <T >>

분류에서Dev

C #과 XAML 간의 양방향 데이터 바인딩 업데이트

분류에서Dev

polymer.dart를 사용한 dart에서 양방향 데이터 바인딩의 예

분류에서Dev

각도에서 지시어의 컨트롤러를 사용한 양방향 데이터 바인딩

분류에서Dev

부모 구성 요소에서 자식 구성 요소로 angular2의 양방향 데이터 바인딩

분류에서Dev

데이터가 다시 변경된 후에도 시계를 트리거하는 지시문의 양방향 바인딩?

분류에서Dev

Winforms List <long> DatagridView에 바인딩하고 올바르게 표시하는 방법

분류에서Dev

Datagridview C #의 데이터 바인딩

분류에서Dev

default_random_engine을 두 개의 다른 uniform_int_distributions에 올바르게 바인딩하는 방법

분류에서Dev

콤보 상자의 양방향 데이터 바인딩 문제-WPF

분류에서Dev

ng-model과 지시문 간의 양방향 데이터 바인딩

분류에서Dev

양방향 데이터 바인딩을위한 Angular2의 setAttribute

분류에서Dev

속성의 양방향 바인딩이있는 폴리머 맞춤 요소

분류에서Dev

양방향 데이터 바인딩을 사용하지 않고 AngularJS의 양식에서 데이터 가져 오기

Related 관련 기사

  1. 1

    양방향 바인딩에는 데이터 그리드의 경로 또는 XPath 오류가 필요합니다.

  2. 2

    angularjs에서 부분 간의 양방향 데이터 바인딩

  3. 3

    Int 속성을 WPF의 Enum에 데이터 바인딩

  4. 4

    List <T>의 데이터를 DatagridView에 바인딩

  5. 5

    List <dynamic>을 C # Windows 양식의 DataGridview에 바인딩하는 방법

  6. 6

    AngularJS의 C3.js에서 양방향 데이터 바인딩

  7. 7

    * ngFor의 양방향 데이터 바인딩

  8. 8

    각도 js의 양방향 데이터 바인딩

  9. 9

    활동 간의 양방향 데이터 바인딩

  10. 10

    Winforms 컨트롤에 바인딩 된 큰 데이터 소스에서 dbcontext의 크기를 제한하는 방법

  11. 11

    사용자 정의보기에 양방향 데이터 바인딩의 사용자 지정 속성

  12. 12

    양방향 데이터 바인딩에 의해 맵 내부의 요소가 변경 될 때 알림 받기

  13. 13

    AngularJS의 양방향 데이터 바인딩에 대한 간단한 실용적인 예

  14. 14

    AngularJS의 양방향 데이터 바인딩에 대한 간단한 실용적인 예

  15. 15

    WindowBuilder의 양방향 데이터 바인딩이 작동하지 않는 것 같습니다.

  16. 16

    Windows 양식의 DataGridView를 목록에 바인딩 <List <T >>

  17. 17

    C #과 XAML 간의 양방향 데이터 바인딩 업데이트

  18. 18

    polymer.dart를 사용한 dart에서 양방향 데이터 바인딩의 예

  19. 19

    각도에서 지시어의 컨트롤러를 사용한 양방향 데이터 바인딩

  20. 20

    부모 구성 요소에서 자식 구성 요소로 angular2의 양방향 데이터 바인딩

  21. 21

    데이터가 다시 변경된 후에도 시계를 트리거하는 지시문의 양방향 바인딩?

  22. 22

    Winforms List <long> DatagridView에 바인딩하고 올바르게 표시하는 방법

  23. 23

    Datagridview C #의 데이터 바인딩

  24. 24

    default_random_engine을 두 개의 다른 uniform_int_distributions에 올바르게 바인딩하는 방법

  25. 25

    콤보 상자의 양방향 데이터 바인딩 문제-WPF

  26. 26

    ng-model과 지시문 간의 양방향 데이터 바인딩

  27. 27

    양방향 데이터 바인딩을위한 Angular2의 setAttribute

  28. 28

    속성의 양방향 바인딩이있는 폴리머 맞춤 요소

  29. 29

    양방향 데이터 바인딩을 사용하지 않고 AngularJS의 양식에서 데이터 가져 오기

뜨겁다태그

보관