드디어 제모습을 갖춰가는 나만에 프레임웍.
JsFW20이라 붙인 이것은 닷넷 2.0용으로 만들어진 나만에 개발프레임웍임.
MSDN처럼 이번 카테고리는 각 프로젝트별, 객체별로 하는 일 멤버등을 기록해볼까 하는데...
잘될런지...
우선 갖춰진 모습을 스샷을 통해 ...
지난 3년간 공부하면서 프로젝트를 진행 하면서 나름 조금씩 조금씩 구축하던것을 최근에서야
플러그인모듈을 만드는과정에서 프레임웍을 만들기로 결심하여
위 사진처럼 솔루션을 JsFW20이라 칭하고 만들어놓았다.
개인적인 개발 프로그램은 이제 이 프레임웍을 이용하여 개발을 할 예정이다.
현재 PlugInClass 프로젝트를 이용한 플러그인 모듈을 최종 UI가 디자인이 구려서 ㅠㅠ;; 완성은 못했지만
거의 끝나가는 관계로.. 이렇게 스샷과 함께 정리해보려 한다.
주석다느라 참 애먹었는데 ... 블러그에 최대한 옮겨놓아볼 예정이다.
올해 안에 될려낭...
이거 마칠때쯤 JsFW3.5 도 만들어볼것이다...
그땐 WPF와 WCF가 포함되지 않을까...
'# 9) My Program(.NET)' 카테고리의 다른 글
My CodeGen ] 프로젝트 디자이너 [ 가제 ] (0) | 2011.08.25 |
---|---|
My CodeGen ] 새프로젝트 ? 템플릿? 코드젠 (0) | 2011.08.22 |
나만에 개발 프레임웍 dll Helper 문서. (0) | 2010.05.12 |
드디어 내 프로그램이 완료 되었다!! (0) | 2010.03.28 |
참조경로 관하여.. (0) | 2010.03.24 |
목록 - 로테이션 응용컨트롤...
목록 로테이션에 관해 잠깐 썼었는데
새로 컨트롤을 만들었다.
아이폰에 피커? 같은... ( 좀 다를수도.. )
왼쪽 이미지는 목록로테이션 알고리즘을 응용해서 쓴것이다.
5번째 데이타가 선택중이고 2를 클릭하면 2가 5의 자리가 올때까지 데이타가 흘러간다.
4가 클릭되면 한자리만큼 내려간다.
8을 누르면 데이타는 위로 올라가면서 8이 5의 현재 위치까지 도달하면 멈춘다.
또 보여줄 갯수를 1, 3, 5, 7 로 고정해두어서 1로 하면 1개짜리 로테이션이 된다.
뒤에 바인드 된 데이타는 허용되는 갯수만큼( 제한없음 ) 가능해졌다.
저걸 쓰면.. 빠찡꼬?를 만들수 있는게야? 또는 로또당첨기를 저걸로 ? ㅡ.,ㅡ;; 또
시계를? 달력을... 일정관리 하루 ~ 24시간 툴로도???
참 많은듯... 하다.
거참 디자인 거시기... 쩝...
오른쪽은 리스트 박스다... 아래 블로깅 글에 올려놨던 그거라서.. 그닥.. 쓰게 없으므로 패쓰
Plugin 모델링을 통해 띄운 메세지 팝업창에 나타낸것으로.. 아주 아주 잘된다.
피커? 에게 현재는 라벨로만 되있지만... 우측 리스트박스처럼 컨트롤들로 컨텐츠를 제공하도록 추가기능을 넣을예정임.
그나저나. 주말엔 완성할게 있는데... 너무 피곤하다...
-- > 업데이트 ( 컨텐츠 추가, 갯수추가, 등등... )
짠~!!
뒤에 보이는 숫자 들이 바인딩된 데이타이며
그 데이타를 컨텐츠( 리스트박스처럼 제작해서 넣을수 있음. )를 직접 제작해서 넣을수 있는 부분을 추가하고 테스트를 완료 하였음.
예를 들면. 숫자 값을
라벨에는 표시 하고, checkbox는 홀수 짝수를 체크해서 짝수는 체크하고 버튼을 누르면 해당 소스 값을 메세지 박스에 보여준다.
어디 어디 쓸수 있을까?
차근 차근 시간되면 만들어봐야징...
- 일정 관리 프로그램에 써볼 예정인뎅...
- 로또를 슬롯머신처럼? 쓰는거?
- 슬롯머신게임? 어릴적 오락실에 나오던 과일그림 맞추기??
- 시계
- 또는 달력 ... 등등... 돌아가는 형태에 따라 뷰 갯수를 지정가능하니... 뒤에 데이타는 배열수만큼 지정가능하다
아! 우측 Ent는 기본 리스트뷰에 넣은거라서.. 훔.. 머.. 나중에 빼든가..
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
MDI 폼 스크롤바 없애기 (0) | 2010.03.25 |
---|---|
폼에 파일 드래그앤드랍 하기 (0) | 2010.03.25 |
리스트 박스를 구현... (2) | 2010.03.12 |
트레이 구현하기... (0) | 2010.02.23 |
데이타 그리드 뷰에 콤보 컬럼에 대한 값 읽기... (0) | 2010.02.05 |
트리노드 검색해서 확장하기...
트리노드 검색해서 확장하기...
훈스 C#게시판에 올라왔던 질문중에 하나 답글달아본거... 그냥 기록? 해둠..
질문자는 탐색기를 만드는것 같았는데...
아래처럼 자식노드이름을 FullPath로 놓고 Text는 해당 DirectoryName Or FileName으로 두면
[그랑께] 노드의 Name속성은 C:\드라이브\어쩌고\그랑께 을 가지게 되고
Text속성은 그랑께 로 위에 그림처럼 나오게 된다.
이때 탐색기 주소줄에 경로 넣듯이 그랑께 <--를 직접 넣었을때
노드확장을 하고자 하면 아래 소스처럼 하면 간단하게 된다.
위에서 차례 차례 검색하는 것보다는 해당 노드를 직접 찾고 그 부모노드를 열어주면 몇단계 안거치고 빠르게 가능해진다.
private void button1_Click(object sender, EventArgs e)
{
TreeNode[] t = treeView1.Nodes.Find(@"C:\드라이브\어쩌고\그랑께", true);
if (t.Length > 0)
{
ExpendParent(t[0]);
}
}
private void ExpendParent(TreeNode p)
{
p.Expand(); // 자기노드 확장
if (p.Parent != null)
{
ExpendParent(p.Parent); // 부모노드를 다음으로 넣어준다.
}
}
참 쉽돵.. 아침 군것질 거리로 딱이네...
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
[GDI+] Matrix 객체 사용해보기... (0) | 2010.07.27 |
---|---|
IFormattable (0) | 2010.07.15 |
목록 로테이션??? (0) | 2010.03.16 |
사용자 정의 문자열 포멧 지정하기 ( IFormatProvider, ICustomFormatter ) (0) | 2009.08.17 |
인터페이스 활용? (0) | 2009.08.11 |
디자인 패턴 설명이 정말 쉬운곳...
디자인 패턴 Java로 설명된 곳
말이 필요없음.. 우선 가서 보는게...
'# 5) 디자인패턴(for .NET )' 카테고리의 다른 글
객체를 공부하면서... 커플링? 느슨한결합도? (0) | 2010.05.04 |
---|---|
체인 패턴... (0) | 2010.05.04 |
커맨드패턴 (0) | 2010.05.03 |
패턴을 써서 좋은점... (0) | 2010.02.17 |
디자인 패턴에 관하여... (0) | 2010.02.17 |
목록 로테이션???
간단하게 1,2,3,4,5,6,7,8,9,10 이란 목록을
1~10 ~ 다시 1부터 시작 ~ 10... 계속...
이런식으로 루프 되듯이 자료를 열람하는 로직을 만들때..
예 ) 이미지 검색... ,문자열 흘리기등...
페이지 검색등... 도 괜찮을것 같공...
아래는 Source는 위에 나열된 10개의 숫자.
보여줄 View는 TextBox 4개로 지정..
1,2,3,4 가 처음 보이고 > 누르면 다음 페이지 또는 증가 숫자만큼.. 다음 리스트가 출력
< 반대로...
간단한 알고리즘이지만... 문득.. 떠올라서 글을 써봄.
처음 문자열 흘리기 할때나. 게임 챗팅처럼 만든다고 index 값을 복잡하게 계산했던때보다는 훨씬 깔끔함..
나중에 class로 묶어두면 요기조기 써먹을데가 있을것도 같은데...
public partial class Form1 : Form
{
const int viewCnt = 4; // 보여줄 View갯수.
int totalCnt = 0;
public Form1()
{
InitializeComponent();
string[] source = this.textBox5.Text.Split(',');
View(source);
}
int[] ViewArray = new int[viewCnt] {0,1,2,3};
private void button1_Click(object sender, EventArgs e)
{
LoopItem( +4 );
}
private void button2_Click(object sender, EventArgs e)
{
LoopItem( -4 );
}
private void LoopItem(int leftRight)
{
string[] source = this.textBox5.Text.Split(',');
totalCnt = source.Length;
for (int i = 0; i < viewCnt; i++)
{
ViewArray[i] = (ViewArray[i] + leftRight) % totalCnt;
if (ViewArray[i] < 0)
{
ViewArray[i] = 10 + ViewArray[i];
}
}
View(source);
}
private void View(string[] source)
{
this.textBox1.Text = source[ViewArray[0]];
this.textBox2.Text = source[ViewArray[1]];
this.textBox3.Text = source[ViewArray[2]];
this.textBox4.Text = source[ViewArray[3]];
}
}
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
IFormattable (0) | 2010.07.15 |
---|---|
트리노드 검색해서 확장하기... (0) | 2010.03.17 |
사용자 정의 문자열 포멧 지정하기 ( IFormatProvider, ICustomFormatter ) (0) | 2009.08.17 |
인터페이스 활용? (0) | 2009.08.11 |
코드리스트 팝업 창 관련 로직. (0) | 2009.08.11 |
세상은 사소한것들을 무시하는듯 하다...
점점 세상은 사소한 것들을 무시하기 시작하는듯 하다.
어른들의 모습을 그대로 답습하고 어른들이 만들어둔 세계에 갖혀 동물원 우리에 갖히듯 세상에 갖힌 아이들이 왠지모르게 불쌍해보인다.
어른들의 기준에 맞춰 어른들이 선택해주는 가치관에 따라 그대로 흘러가는 듯이 자기 편한 위치로 이동해서 편하게 살아가는...
뭐 다른 얘기로 아침에 우연히 본 횡당보도앞의 상황...
학생들과 나란히 선 한 사람... 대학생쯤 ? 되보이는 그사람.. 빨간불신호에 그냥 건너갔다. 다음 학생들이 보고 그대로 건넌다. 차도 폭은 그리 넓은길이 아닌 골목길수준이었으나 엄연히 신호등이 서있는데 어찌 ...
전에 다니던 회사에서의 한 직원이 나보고 왜 차도 없는 횡단보도에 서있냐고 물었다. 차도 없는데 건너라고...
지키라고 만들어준걸 지켜줘야 하는거라고... 점멸신호도 아니고 빨간불, 녹색불이 엄연히 자리해 있는 곳이고
차가 가는 신호, 사람이 가는 신호를 구분해서 가는 것이 곧 사소한 규칙이 아닌가?
이런 규칙을 무시하다보면 점점더 사소한것들의 부피가 커지는데...
고리타분하다 느낄지도 모르지만... 난 그렇게 생각한다. 서로가 사소한것들을 지켜줌으로써 서로가 서로에게 피해 주지 않는게 좋은게 아닌가??
이런 일들을 일일이 나열하기는 구찮고...
다만 이런 일들을 어른들이 스스럼없이 하여.. 그걸 보고 배우는 학생들은 더 큰일들도 스스럼없이 하게 되는 것이 아닐까 ... 싶다!
'--- 취미 > 생각하기' 카테고리의 다른 글
한순간에 방심으로 죽을뻔했다... (0) | 2010.05.03 |
---|---|
[멋진글... (펌)]현재 하고 있는 세븐소울즈가 캐쉬템을 팔면서 올라온글... (0) | 2010.04.30 |
FlexGrid의 Header Merge 구현하다가 생긴일... (0) | 2010.02.11 |
노트북을 사다... (0) | 2010.01.16 |
오늘은 왠일로... 30명이나... (0) | 2010.01.13 |
리스트 박스를 구현...
Plugin 프로그램을 만들다가 각 Item을 관리하려다 보니
리스트 박스로 표현이 안되서 새로 하나를 만들었다.
WPF라면 보여지는 데이타를 쉽게 바꿀수 있지만.
지금 계획이 2.0으로 우선 나만에 SDK를 만드는것이라... 2.0으로 우선 작업중이다.
Plugin 모듈은 완성이 되었고 테스트도 마쳤공...
각 plugin되는 Item을 관리해줘야 하니... 이걸 담아줄 그릇으로 이번에 제작했다.
그러나... 디자인 감각이 워낙 드러나기에... 쉐뜨..
일반 리스트 박스에 위아래 버튼만 넣은것처럼 보이겠지만..
실제로 각 아이템을 바꿀수 있는 부분이나 선택처리부분등등... 구현된것이다.
나중에 완성품 스샷 찍는 날까지... GoGo!
--> 3/13일 추가적인 스샷..
리스트 안에 TextBox, Label을 추가한모습을 볼수 있다.
오른쪽 버튼은 기본적으로 박아두었고 선택시 보이는 정도인데 추후에 뺄지 말지... 설계 과정에서 결정할 문제이다.
이로써 내부 아이템 구조를 바꾸는 것까지 구현은 되었는데 아이템을 바인딩 하기 위한 방법을 찾아야겠다
추가시 일일이 버튼 생성하고 데이타를 넣고 하는것보다는 Xaml처럼.. 뭔가 고정된 문서를 바탕으로
처리해보는게 좋을듯 싶은데... 아니면 중간에 특정 변환 객체를 두고 바인딩 시도를 하는 게 좋을듯 하다.
현재는 대리자를 통해 전달하면 리스트아이템에 넣어주게 되어 있다.
--> 추가... 변경사항
처음 생각했던걸 표현하는데 조금 미쓰가 나서리... 너무 컨트롤에 집중한 나머지.. 실제 들어오는 데이타에 대한 생각을 좀 못해서 약간에 변경사항이 생겼다.
ListBoxItem.Source 필드를 만들고 들어오는 데이타를 여기에 담고.
ListBoxItem.ContentControl ( 기존에 존재 ) 서로 Bind_SourceToControl 대리자를 통해
외부에서 묶어주는 단계를 추가하였다. 그러니 산뜻한 컨트롤이 끝났다.
실제 플러그인 모듈에 붙여봤더니 잘된다... 아하하하하하하.... 즐겁도다..
--> 3월 15일...
리스트 박스 컨트롤이 말썽이 생겼었는데 퇴근후 집에와서 주석처리를 동반하면서 디버깅에 들어갔더니 원인을 찾았으나
왜 그런지는 모르겠다.
public partial class ListBox : UserControl, IUpdateListBox
{
/// <summary>
/// 데이타 소스 원본
/// </summary>
//protected IList<ListBoxItem> dataSource = new List<ListBoxItem>();
// 추가되면 디자인모드상에서 에러가...
protected IList<ListBoxItem> dataSource = null;
...
}
null을 주고 처리하면 된다..
넘겨받아서 처리 하기때메 굳이 생성할 필요는 없지만.. 저 구문으로 사용하면
디자인 모드에서 사이즈 변경시 vs2008이 죽어버린다.
뭐 잡았으니.. 모두 원상태로... 개발은 계속...
내부에 ToolBox를 넣은 스샷... 마지막 스샷일듯...
이제 플러그인 메인 프로그래밍에 중점을 두고...
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
폼에 파일 드래그앤드랍 하기 (0) | 2010.03.25 |
---|---|
목록 - 로테이션 응용컨트롤... (0) | 2010.03.19 |
트레이 구현하기... (0) | 2010.02.23 |
데이타 그리드 뷰에 콤보 컬럼에 대한 값 읽기... (0) | 2010.02.05 |
ListView에 컬럼 동적 제어... (0) | 2010.02.05 |
툴을 제작 해서 프로젝트를... 진행하다!
VB.NET을 계속 수정하다 보니 지루하고 짜증만 나고 익숙하지 않은 노트북 키보드에... 여러가지 힘든점을
늘 그렇듯... 이번에도 툴을 만들었다.
훨씬 객체간에 데이타 주고 받는 느낌은 심플하다..
그리드 컬럼으로 부터 -> 출발해서...
완성되는 소스에 조각 조각 코드를 생성해서 붙여넣는다..
>> 왼쪽 코드를 붙여넣으면 정규식에 의해 변수만 체크해서 리스트화 한다.
>> 리스트화된 변수에 대한 셋팅을 한다. 이는 그리드 셋팅 문구를 만들어내는데 필요한 설정내역이다.
>> 만들어낸 결과물이다... 이를 복사해서 붙여넣으면 된다.
>> 그리드의 컬러 셋팅구문을 만들내는 화면이다. 그리드 컬럼을 선택하고 만들어내서 붙여넣기 하면 된다.
>> 그리드내에서 코드들을 찾는 폼을 띠울때 설정하는 몇가지 이벤트 코드를 한꺼번에 뽑아낼수 있는 화면이다.
일일이 치는게 만만한 일이 아니어서...
>> 폼 상단에 추가되는 버튼들의 이벤트와 생성을 뽑아내는 화면이다.. 등록하고 뽑아내면 쉽게 만들어낸다.
>> J 라는 빨간 아이콘은 해당 프로그램이 트레이에 들어가있을때의 아이콘임... ( 캬~~ )
이로써 일주일간 테스트 해본결과... 작업이 굉장히 빠른데... 겁나게 피곤하다..
그래도.. 일일이 타이핑하기에 너무 많은 양이라... 이렇게 하지 않음... 못버티겠다...
또 하나의 툴을 만들어내고 업글하는 재미로.. 지금 프로젝트는 진행 되고 있다.
'# 3) .Net ( Vs 2008 ) > WPF' 카테고리의 다른 글
WPF 쓰레드 ( 프로그래스바 ) (0) | 2010.08.10 |
---|---|
[WPF] Tab 순환코드 (0) | 2010.07.27 |
WPF 3D (0) | 2009.12.29 |
데이타바인딩(2) (0) | 2009.12.28 |
데이타바인딩(1) (0) | 2009.12.28 |
배열 정렬하기...?
쉬운 것인뎅...
1 5 11 2 8 66 7 121 6 77 25 48 442 0 이런 불규칙적인 숫자가 있을시..
이걸 c에선 정렬방법에 따라 구현했어야 했지만.
C#은 간단하게 해결이 가능하다.
private void button1_Click(object sender, EventArgs e)
{
string[] Numbers = this.textBox1.Text.Split(' '); // textBox는 무정렬 숫자배열을 가진 컨트롤임.
int[] Numbers_int = new int[Numbers.Length];
for (int i = 0; i < Numbers.Length; i++)
Numbers_int[i] = Convert.ToInt32(Numbers[i]);
//Array.Sort<int>( Numbers_int , fnCompare );
Array.Sort<int>(Numbers_int);
foreach (int num in Numbers_int)
this.textBox2.Text += num.ToString() + " ";
}
int fnCompare(int s1, int s2)
{
return s1.CompareTo(s2);
}
결과는 0 1 2 5 6 7 8 11 25 48 66 77 121 442 이다.
음... 너무 쉬운가?
'# 1) 프로그래밍' 카테고리의 다른 글
Attribute를 직접 정의해서 쓸줄이야... (0) | 2010.03.30 |
---|---|
개발을 하다보니... (0) | 2010.03.29 |
Enum객체 관련 설명. (0) | 2010.02.10 |
삼항연산자 중복... (0) | 2010.02.05 |
머리에 물주전자 올려 뎁혀서 커피 한잔? (0) | 2010.01.25 |
트레이 구현하기...
에... 늘 쓰던건데... 그냥 블로그에 기록해봄
1. 도구상자에서 NotifyIcon 컨트롤을 얹어놓고.
더블클릭이벤트 -> Form.Show();
2. contextMenu 컨트롤도 하나 올리고 -> 종료하기를 구현한다.
3. NotifyIcon에 사용할 아이콘 이미지 하나를 제작하고 컨트롤에 등록해준다.
4. bool Flag하나 선언하고 CheckBox하나를 더 등록한다.
5. 나머진 구현만 하면 되는데... 작업표시줄에 아이콘활성화는 폼을 Hide하고 NotifyIcon.Visible = true; 하면된다.
구현 시 동작은 폼이 닫힘 버튼을 누르거나 X를 눌러 종료시 -> 최소화라는 CheckBox 의 체크값에 따라 되고 안되고를 처리 하며 bClose는 FormClosing이벤트의 e.Cancel 값을 토글하는 목적으로 사용된다.
소스를 아래 붙힌다.
수정 : 2010,2,24일 doClose는 삭제처리..
-> 로직을 생각해보니 doClose는 필요없었던듯 함.
생기게된 이유는 원래 목적이 그거였는데 중간에 외부에서 입력시켜주는 checkBox를 추가하면서 doClose가 필요없는데도... 남겨두었던것...
public partial class MainForm : Form
{
//폼 닫히는 지 확인값.
bool doClose = false;
public MainForm()
{
InitializeComponent();
}
// 닫기버튼으로 폼을 닫는다
// 이때 checkBox의 값은 Closing될때 체크되어 진짜 닫을지 최소화 하고 작업표시줄에 나타낼지가 결정되므로
// 여기서는 무시한다.
private void button3_Click(object sender, EventArgs e)
{
this.Hide();
doClose = false;
this.Close();
}
// 폼이 처음 Show되는 위치를 지정한다. 작업표시줄 바로위에 표시되게 값을 지정함.
protected override void OnShown(EventArgs e)
{
this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
this.Top = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
notifyIcon1.Visible = false;
base.OnShown(e);
}
// 폼이 닫힐때 최소화 체크값에 따라 닫힐지 최소화가 될지가 결정된다.
// bClose값이 e.Cancel값으로 그냥 닫는 것을 캔슬 해준다.
protected override void OnFormClosing(FormClosingEventArgs e)
{
if (checkBox1.Checked)
{
doClose = true;
this.Hide();
notifyIcon1.Visible = true;
}
e.Cancel = doClose;
e.Cancel = checkBox1.Checked; // 이렇게 바뀜.
base.OnFormClosing(e);
}
폼이 완전 닫혔으면 NotifyIcon을 정리해준다 안그러면 작업표시줄에 살아있는 것 처럼 남게 된다.
protected override void OnFormClosed(FormClosedEventArgs e)
{
this.notifyIcon1.Visible = false;
this.notifyIcon1.Dispose();
this.notifyIcon1 = null;
base.OnFormClosed(e);
}
// 닫기버튼 클릭시...
private void button4_Click(object sender, EventArgs e)
{
this.Hide();
doClose = true;
notifyIcon1.Visible = true;
}
// ContextMenu에 종료하기 클릭시...
private void 종료하기ToolStripMenuItem_Click(object sender, EventArgs e)
{
doClose = false;
this.checkBox1.Checked = false;
this.Close();
}
// NotifyIcon을 더블클릭시 프로그램 Show기능
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
doClose = true;
notifyIcon1.Visible = false;
this.Show();
}
}
대충 훑어보았음... 늘 쓰는거라서... 정말 많이 필요해지면... 중간에 따로 관리 객체를 만들어서 프레임웍에 넣을까?
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
목록 - 로테이션 응용컨트롤... (0) | 2010.03.19 |
---|---|
리스트 박스를 구현... (2) | 2010.03.12 |
데이타 그리드 뷰에 콤보 컬럼에 대한 값 읽기... (0) | 2010.02.05 |
ListView에 컬럼 동적 제어... (0) | 2010.02.05 |
텍스트박스 라인넘버 넣기! (0) | 2009.10.26 |