728x90

System.InvalidOperationException: '컬렉션이 수정되었습니다. 열거 작업이 실행되지 않을 수도 있습니다.'

 

발생 사유
foreach 내부에서 Add를 사용하여  Collection 수정을 하고자 하였음.

해결책
 1안. Collection 수정을 위해 foreach 대신 for으로 변경하여 사용
 2안. Collection 수정을 위해 foreach 대신 Find를 사용

728x90

'C#' 카테고리의 다른 글

Adorner ?  (0) 2021.03.08
Main 변수를 Class에서 사용 방법  (0) 2021.03.05
[WPF] 표시기 레이어 제거  (0) 2021.02.19
[WPF] 표시기 구현 방법  (0) 2021.02.19
Open CV 설치 및 패키지 구성 요소  (0) 2021.01.22
728x90

텍스트 박스 내용이 숫자 일 경우 숫자형으로 받아보는 방법.

int point_x = 0;
int point_y = 0;
int.TryPArse(textbox.Text, out point_x);
int.TryPArse(textbox.Text, out point_y);

728x90
728x90

 

이전 글에서는 레이어를 생성 하였지만, 이번에는 레이어를 제거 하였습니다.

사이즈 조절 후 레이어를 제거하여, 사이즈 조절이 필요 할 때마다 레이어가 다시 생성 되도록 하였습니다.

아래 예제는 마이크로소프트에서 제공하는 예제로써 이 예제를 이용하여 사용 하시면 됩니다.


1. 예제

Adorner[] toRemoveArray = myAdornerLayer.GetAdorners(myTextBox);
Adorner toRemove;
if (toRemoveArray != null)
{
      toRemove = toRemoveArray[
0];
      myAdornerLayer.Remove(toRemove);
}

 

2. 예제

try {
       myAdornerLayer.Remove((myAdornerLayer.GetAdorners(myTextBox))[
0]);
     }
catch { }

 

docs.microsoft.com/ko-kr/dotnet/desktop/wpf/controls/how-to-remove-an-adorner-from-an-element?view=netframeworkdesktop-4.8

728x90
728x90

 

사각형과 원형 사이즈 조절 기능을 구현하고자 표시기를 만들었습니다.

표시기는 위 형태로 생성 되었습니다.

표시기를 통하여 사이즈가 조절 되도록 하였습니다.

 

예제에는 표시기에는 고유 렌더링 동작이 포함되어 있지 않음에 유의해야 한다고 설명되어 있습니다.

Microsoft사에 예제가 있으니 참고 하시면 되겠습니다.

docs.microsoft.com/ko-kr/dotnet/desktop/wpf/controls/how-to-implement-an-adorner?view=netframeworkdesktop-4.8

728x90
728x90

 



List<string> list_str = new List<string>();


Remove

RemoveAt

RemoveAll

RemoveRange

728x90
728x90

이미지를 불러와서 사용하고 다시 다른 이미지를 불러온다면 오류가 발생 합니다.


오류 방지하는 방법 :

사진을 사용할 때 프로그램이 사진에 접근중이어서 생기는 문제를 방지하기 위해 이미지만 로드하고 접근을 닫아주면 됩니다.


사용방법 : 

   public static BitmapImage getImageSource(string UriPath)
        {
            BitmapImage image = new BitmapImage();

            image.BeginInit();

            image.CacheOption = BitmapCacheOption.OnLoad;

            image.UriSource = new Uri(UriPath);

            image.EndInit();

            return image;

        } 




ps. https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.media.imaging.bitmapimage.endinit?view=net-5.0

728x90
728x90

오류 메세지 내용 : 

FileLoadException: 파일이나 어셈블리 'DevExpress.Printing.v20.2.Core, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 찾은 어셈블리의 매니페스트 정의와 어셈블리 참조가 일치하지 않습니다. 

(예외가 발생한 HRESULT: 0x80131040)


즉.. 어셈블리의 매니페스트 정의가 어셈블리 참조와 일치하지 않습니다.



오류 해결 :

참조에서 해당하는 참조 삭제 후, 참조 관리자에서 다시 해당하는 참조를 찾아서 다시 적용 시키면 해결이 됩니다.


만약 잘 모르겠다면 참조 전부 삭제 후, 다시 등록하는 것도 한 방법이나.... 이걸로 시간 낭비는.... 안좋은거 같습니다.



728x90
728x90

DevExpress에서는 필요한 아이콘 사용 방법

네임 스페이스 : DevExpress.Xpf.Scheduling

어셈블리 : DevExpress.Xpf.Scheduling.v20.2.dll


1. xmal에 캡션을 지정 합니다.

<dxb:BarButtonItem Content="but01" /> 


2. 만들어진 캡션을 (◀)선택 후 LargeGlyph의 ...을 선택합니다. 


3. 원하는 아이콘을 선택합니다.


4. 아이콘을 가지고 왔을 때 모양 입니다.

<dxb:BarButtonItem Content="but01" LargeGlyph="{dx:DXImage SvgImages/Dashboards/Pie.svg}" /> 









ps. https://docs.devexpress.com/WPF/DevExpress.Xpf.Scheduling.ViewBase.LargeGlyph


728x90
728x90

1. OpenCvSharp 라이센스

 Apache 2 라이센스로 소스 코드 공개의 의무가 존재하지 않고, 변형물 특허 출원이 가능하다.


2. 설치 방법


OpenCvSharp4 : .NET Framework OpenCV 라이브러리 래퍼

OpenCvSharp4.runtime.win : Windows 전용 런타임 패키지

OpenCvSharp4.Windiws : .NET Framework OpenCV 래퍼 + Windows 전용 런타임 패키지 (단. UWP 제외)

OpenCvSharp4.runtime.ubuntu.18.04-x64 : Ubuntu 18.04 전용 런타임 패키지

OpenCvSharp4.WpfExtensions : WPF UI 사용되는 확장 라이브러리 

728x90
728x90

"출력 형식이 클래스 라이브러리인 프로젝트는 직접 시작할 수 없습니다" 메시지가 출력이 된다면 아래와 같이 하면 됩니다.


1. 메시지 박스 내용을 읽어보면
   - 라이브러리 프로젝트를 참조하는 실행 가능한 프로젝트를 추가하고, 시작 프로젝트로 설정하라고 되어 있습니다.




2. 메시지 박스에서 설명 한 것처럼 라이브러리 프로젝트 참조를 위해, 참조 추가 진행 합니다.
   추가 방법은 2가지가 있으며, 그 중 한가지 방법으로 하면 됩니다.


2-1) 참조에서 마우스 오른쪽을 눌러서 참조 추가에 들어가는 방법


2-2) 프로젝트에서 마우스 오른쪽을 눌러서 추가(D) → 참조(R)..에서 들어가는 방법




3. 프로젝트 솔루션에서 참조하는 프로젝트를 선택합니다.




4. 메뉴 탭에서 프로젝트 선택 → 시작 프로젝트로 설정 선택




5. 다시 빌드를 시작 합니다.

728x90

+ Recent posts