IFormattable 와 ( IFormatProvider, ICustomFormatter )
IFormattable 은 객체자체적으로 특정 포멧을 제공할때 사용하고
IFormatProvider 는 객체에 특정 포멧들을 외부에서 제공할때 사용한다.
소스 변환기를 만들면서 각 디자인 아이템들의 내부에서 제공할것들과 외부에서 만들어지는 것들을
별도로 분리하여 설계할때 도움이 컸다.
마냥 사용하던 두가지를 분리해서 사용하니 편하였음.
Data data = new Data();
string Result1 = string.Format("{0:FMT}", data);
DataFormatter fmt2 = new DataFormatter();
string Result2 = string.Format(fmt2, "{0:FMT2}", data);
요렇게 사용하면
Result1 에는 "사용자정의 = Data" 이 반환되고
Result2 에는 "FMT2 [사용자정의 = Data]" 가 반환 된다.
public class Data : IFormattable
{
#region IFormattable 멤버
public string ToString(string format, IFormatProvider formatProvider)
{
if (format == "FMT")
{
return "사용자정의 = Data";
}
return ToString();
}
#endregion
}
public class DataFormatter : IFormatProvider , ICustomFormatter
{
#region IFormatProvider 멤버
public object GetFormat(Type formatType)
{
if (formatType == typeof(ICustomFormatter)) return this;
return null;
}
#endregion
#region ICustomFormatter 멤버
public string Format(string format, object arg, IFormatProvider formatProvider)
{
if (format == "FMT2")
{
return "FMT2 ["+ string.Format("{0:FMT}", arg) + "]";
}
return "";
}
#endregion
}
'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글
Winform] Effect 효과 처리! (0) | 2013.08.23 |
---|---|
WinForm + WebApi ] HighLight( 하이라이트 ) (0) | 2013.08.22 |
FlexGrid ] Cols[ 컬럼명 ].DataMap (0) | 2011.12.07 |
GlassForm (1) | 2011.11.15 |
Array.ConvertAll 관련... (0) | 2011.11.15 |
문자열] 자리수만큼 잘라서 특정 문자 넣기.
자리수만큼 잘라서 특정 문자 넣기.
StringBuilder sb = new StringBuilder("abcdefghijklmnopqrstuvwxyz");
int cnt = 0;
const int LINECHARLENGTH = 4;
bool isRun = true;
while (isRun)
{
cnt += LINECHARLENGTH;
isRun = cnt < sb.Length;
if (isRun == false) break;
sb.Insert(cnt, Environment.NewLine);
cnt += Environment.NewLine.Length;
};
'# 4) .Net ( Vs 2010 ) > C#' 카테고리의 다른 글
DevExpress WinForm] Layout Control (0) | 2014.10.12 |
---|---|
바로가기 만들기] shortcut (0) | 2014.09.27 |
WinForm] Ribbon 컨트롤 (0) | 2013.07.08 |
WinForm] 도킹 패널! (0) | 2013.07.08 |
WINFORM] 컨트롤 동적 사이즈 조절... (0) | 2013.03.26 |
3가지중 1개로 선택해서 바꿈] 더블 삼항연산자
string align = "LEFT";
string align1 = align != "LEFT" ? align != "RIGHT" ? "Center" : "Right" : "Left" ;
3개의 값중 1개로 값을 바꾸고 싶을때....
위는 대문자로 된 문자열을 소문자로 바꾸는 역할을 사용하는 것임.
응용!!!
string f = "1";
1) string selected = ( val != "1" ? "아닌것" : "일" ); 요렇게 기본적인 삼항연산자에서!!
string selected = (val != "1" ? (val != "1" ? "아닌것" : "일") : "일"); 요렇게 끼워넣고,
string selected = (val != "1" ? (val != "2" ? "아닌것" : "이") : "일"); 수정하면 이제 세가지 중 하나를 선택하게되었음.
2) string selected = (val != "1" ? (val != "2" ? "아닌것" : "이") : "일"); 에서
string selected = (val != "1" ? (val != "2" ? (val != "2" ? "아닌것" : "이") : "이") : "일"); 요렇게 또 끼워넣고,
string selected = (val != "1" ? (val != "2" ? (val != "3" ? "아닌것" : "삼") : "이") : "일"); 수정하면 됨.. 계속 증가 가능함.
여라가지 선택조건에서 원하는 값으로 변경이 가능하게 됨. 괄호는 이해하기 편하게 쓴것이고,
보기어렵게 만들고 싶으면...
응용 투~!!
Func<int> AFunc = () => { return (int)'a'; };
Func<int> BFunc = () => { return (int)'b'; };
Func<int> CFunc = () => { return (int)'c'; };
string call = "C";
int result = (call != "A" ? call != "B" ? CFunc : BFunc : AFunc)();
위에서 오류? 다시 생각해보니 3가지중 2가지는 선택이 맞지만 나머지는 두 값이 아니면 선택되는 것이므로..
# 딱 3중에 1개는 아님...
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
Mover] 구형 신형. (0) | 2016.07.19 |
---|---|
다른 프로그램을 내 프로그램 판넬에 띄우는 방법 (0) | 2016.02.23 |
[ C# WinForm ] 음.. 달력!! (0) | 2011.03.24 |
그림판? 그림 이동? 별그리기... (2) | 2010.07.23 |
런타임상에서의 컨트롤 사이즈 드래그!!! (0) | 2010.06.10 |
JSFW 디자이너] 데모 스샷!
스샷!!
아직 기능이 구현이 완료된 건 아니지만...
아래처럼 컨트롤 배치하고 디자인 하는데 5분. 상세설정(ID나 속성, 컨트롤마다 사용하는 SP)을 하면
대략 20~40분 정도 소요가 되고
Save 버튼 한번이면 두번째 스샷처럼 소스를 가공해서 떨어뜨려준다.
가공된 소스에서 실제 sp 호출하는 파라미터들 연결해주고 이벤트등을 동작에 맞춰 추가수정해주면
한 페이지 생산이 끝날 수 있다.
적응만 하면 페이지 뽑는 것은 누구나 가능할 수 있게 된다.
SI에서 특정 개발프레임에 맞춰 페이지를 물량전으로 뽑아내야 할 때!!!
초기 프레임에 맞춰서 각 컨트롤에 대해 가공될 소스를 작업해주어야 하는 시간이 조금 소요되긴 하지만...
윈폼이든 웹폼이든, 모바일이든 개발이 가능해진다.
앞으로 추가할 것은. 좀더 다양한 컨트롤과 좀더 이쁘게 꾸며야 하는 것!
또 각 업체별 프레임을 Addin 할수 있게 객체모델을 조금 변경하는 것...
이미 반은 되있지만...
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
PRJMNG] Project Manager Update (0) | 2014.01.26 |
---|---|
JSFW] New 버젼! (0) | 2013.09.05 |
작업이력관리툴 ~!! (0) | 2013.06.26 |
PRJMNG] 드디어 디자이너 자잘한 버그는 수정 끝 (0) | 2013.04.17 |
PRJMNG] 훔 7번째 뒤집게 생겼네... (0) | 2013.04.14 |
Designer] 앞으로...
# 디자이너 미래의 상상도...
이걸 시작한지는 3년이 넘었으나, 아직도 개발중이다. SI 프로젝트를 다니다보면 C#이란 언어에 한정되어 작업을 해왔고, 이 C# 마저도 프로젝트마다 개발프레임웍이 달라 항상 새로 쳐넣거나 복사해서 붙여넣기를 반복해야 하던 중.. Snippet 이란게 있는걸 알고 코드조각을 만들어 쓰다가, 이것도 너무 부분 부분이라서 일정하게 문자열을 치환해주는 프로그램을 만들어 쓰다가...
디자이너를 구상해서 만들었다. 1년동안 프로젝트들어가서 일하다보니 뒤로 접어뒀다가
다시 만들게 되었다. 그리고 만들던 중 Mockup, 발사믹이란게 있는 것을 알고 실제 써봤다. 그러나 불편한점이... 디자인 컨텐츠를 정해진것과 내가 원하는 소스형태로 뽑아낼 수 없고 그저 이미지만 얻을 수 있다.
내가 만들고 있는 아이템들은 서로 서로 조합할 수 있으며, 변환기를 사용자가 직접 꾸며서 추가할 수 있다.
위 그림에서 JSFW : Plugin 요것은... 실제 디자인을 마치고 내보내기를 할 때를 위한 구성이다.
소스의 표준타입코딩은 내가 만드는 프레임웍에 맞춰 저장되고, 그에 맞춰 반영된다.
업체의 프로젝트에 들어갔을 때는 템플릿소스를 내려받아 업체에 맞춰 코딩 AddIn 시키면,
내보내기 할 때 업체에 맞춘 소스를 떨어뜨릴 수 있게 된다.
이제 많이 남지 않았네!!!
'# 9) My Program(.NET)' 카테고리의 다른 글
쿼리포맷터II (0) | 2015.05.05 |
---|---|
쿼리 포맷터! (0) | 2015.05.01 |
디자이너] Xaml -> 디자인 -> Xaml (0) | 2013.07.04 |
디자이너] 추가 역변환 (0) | 2013.07.03 |
디자이너] 8번을 뒤집어... (0) | 2013.07.02 |
WinForm] Ribbon 컨트롤
리본컨트롤
http://www.codeproject.com/Articles/364272/Easily-Add-a-Ribbon-into-a-WinForms-Application-Cs
리본컨트롤 dll을 추가해서
항목 Ribbon 을 폼에 드래그 하면 위에 초기화면이 올라오고
각 컨트롤 클릭해서 addTab -> addPan추가하고 각 아이템 컬렉션에 필요한 엘리먼트 추가 하면 됨.
Style 프로퍼티에 따라 일반 버튼, 드롭박스 형태로 구분하여 구현가능함..
'# 4) .Net ( Vs 2010 ) > C#' 카테고리의 다른 글
바로가기 만들기] shortcut (0) | 2014.09.27 |
---|---|
문자열] 자리수만큼 잘라서 특정 문자 넣기. (0) | 2013.08.20 |
WinForm] 도킹 패널! (0) | 2013.07.08 |
WINFORM] 컨트롤 동적 사이즈 조절... (0) | 2013.03.26 |
WinForm] 단축키 (0) | 2012.10.11 |
WinForm] 도킹 패널!
도킹패널 한번 써봤는데 굉장히 쉽넹???
전엔 소스 모두 분석한다고 파고 들고 들어가다가 어려워서 포기했었는뎅...
'# 4) .Net ( Vs 2010 ) > C#' 카테고리의 다른 글
문자열] 자리수만큼 잘라서 특정 문자 넣기. (0) | 2013.08.20 |
---|---|
WinForm] Ribbon 컨트롤 (0) | 2013.07.08 |
WINFORM] 컨트롤 동적 사이즈 조절... (0) | 2013.03.26 |
WinForm] 단축키 (0) | 2012.10.11 |
GDI+] 이미지 회전! (0) | 2012.08.13 |
디자이너] Xaml -> 디자인 -> Xaml
우선 현재 작업에 필요한 디자인측면에서의 컨텐츠는 거의 다 넣었고..
소스변환부터 읽고 변경하고 적용되는 부분까지 테스트는 마쳤음.
몇가지 더 추가작업 후엔 DB와 연계시켜 MagicBox(?)를 써먹을때가 다가온다..
'# 9) My Program(.NET)' 카테고리의 다른 글
쿼리 포맷터! (0) | 2015.05.01 |
---|---|
Designer] 앞으로... (0) | 2013.07.10 |
디자이너] 추가 역변환 (0) | 2013.07.03 |
디자이너] 8번을 뒤집어... (0) | 2013.07.02 |
웹 사이트 배포툴 ] 사이트 배포... (0) | 2012.11.26 |
디자이너] 추가 역변환
디자인 -> 코드로 뽑아내는 부분은 커스터마이징이 쉽게 되었으나..
실제 사용된 코드들을 디지이너 맞춰서 되돌리는 작업은 공통적으로 가져갈 순 없고,
별도로 코드를 직접 만들어야 가능했다.
그래서 Xaml 소스를 디자이너에 가져다 붙여 변환 시켜보니 두번째 처럼 엘리먼트에 있는 요소들이 나타났다.
그리고 다시 소스변환버튼을 누르면 해당 디자인이 소스로 변환하는 것을 세번째 화면에서 볼 수 있다.
좀 더 컨텐츠들을 손보고 있는데 색상 조합이 정말 G랄이구나!!
라벨 -> TextBlock
TextBox -> TextBox
ComboBox -> ComboBox
LayoutGrid -> Grid
CodeFind -> CodeFind
... 몇가지 더 있고, 앞으로 컨트롤들을 맵핑시켜갈 예정임!
'# 9) My Program(.NET)' 카테고리의 다른 글
Designer] 앞으로... (0) | 2013.07.10 |
---|---|
디자이너] Xaml -> 디자인 -> Xaml (0) | 2013.07.04 |
디자이너] 8번을 뒤집어... (0) | 2013.07.02 |
웹 사이트 배포툴 ] 사이트 배포... (0) | 2012.11.26 |
Dev Tools [ Idea ] (0) | 2012.07.06 |
디자이너] 8번을 뒤집어...
# 디자이너를 8번째 다시 만들어서 개조했다.
역시 컨텐츠를 생성해내는데 필요한 코드가 너무 복잡스러웠던 예전...
지금은 엄청 편하게 만들어진다.
좀더 쉽게 만들수 있는 포인트가 있지만.. 우선 써보자...
우선 데모버젼도 있지만...
현 프로젝트에 맞춰 컨트롤 몇개를 만들어 붙여넣었고 이것을 바탕으로 코드변환이 가능함.( 현재 WPF 용 )
추가 중 : Xaml을 사용 컨트롤들로 역변환 시키는 기능을 추가중에 있음!
<<몇가지 기본컨트롤을 배치 , 우측엔 레이아웃용 그리드>>
<< 매직박스? 기능 추가! >>
<<매직박스 편집기>>
<< 기본 편집창(좌: 컨트롤별 속성 편집, 우: 레이아웃 편집) >>
'# 9) My Program(.NET)' 카테고리의 다른 글
디자이너] Xaml -> 디자인 -> Xaml (0) | 2013.07.04 |
---|---|
디자이너] 추가 역변환 (0) | 2013.07.03 |
웹 사이트 배포툴 ] 사이트 배포... (0) | 2012.11.26 |
Dev Tools [ Idea ] (0) | 2012.07.06 |
MyCodeGen ] 웁쓰... 망했다. (0) | 2011.09.05 |