혹시 써먹을 일 있나.. 싶어서 뚝딱 만들었음 ㅎㅎ

뿌리는 김에 내 어플 광고도 ㅎㅎ

다운 받으실 분들은 받으시고~

공부하실 분들은.. 뭐 너무 간단하지만 보시고 ㅋㅋ


아래 코드요~

더보기






 





또 다른 인기 어플! 겁나 그럭저럭 어려운 퍼즐!

Gem Master! The most difficult puzzle!


다운로드 :  http://itunes.apple.com/us/app/gem-master!-lite/id499444540?mt=8
신고
Posted by ParkPill 박필

 음.. 안된다. 하지 말길 바란다. ㅡ.ㅡ;

엑셀을 깔아야 .Net에서 쓸 수 가 있다.

그냥 우리 .csv 쓰자.

혹시 설마 이게 뭔지 모르는 사람을 위해 간단히 설명하자면

이름,나이,잘생김정도,키
박필,29,Very Good,174
랑케,29,Good,178
풍생,29,Good,182

이렇게  FileStream으로 걍 쓰면 된다.




엑셀이 깔린 PC인데 되지 않는 경우는 아래의 링크를 참조 바람.

은하의 신나는 개발이야기




혹시나 또 설마 FileStream 공부하기 귀찮은 분들을 위해 이것마저 링크 걸어드립니다.

GhostSheep's Blog 
신고
Posted by ParkPill 박필

Here it is!

tbCurrentData.Select(tbCurrentData.Text.Length, 0);

in fact,   it is all in MSDN :p

Have a good day~ 
신고
Posted by ParkPill 박필

DataGridView의 Row Header의 왼쪽에 까만 삼각형이 있다. 짱나게.. -_-;

없애는 법! 있긴 있다 ㅎㅎ

RowHeaderDefaultCellStyle 에서 Padding 에 한 100 쯤 넣어서 타이틀을 다 Header 밖으로 다 보내버리고
(만약 RowHeader에 넣을 Text가 없다면 위의 방법으로 이미 해결이 되었을 터이다)

RowPostPaint이벤트를 사용하여 따로 그리면 된다. 아래처럼 ㅎㅎ

object o = dgvTable.Rows[e.RowIndex].HeaderCell.Value;

            if(o != null && !string.IsNullOrEmpty(o.ToString()))
            {
                e.Graphics.DrawString(o.ToString(), dgvTable.Font, 
                                      Brushes.Black, 
                                      new PointF((float)e.RowBounds.Left + 2, 
                                      (float)e.RowBounds.Top + 4));
            }

 아;; 참 별로다.

위의 방법으로는 긴 TEXT는 Cell 의 영역까지 침범해버린다.

결국 RowHeader의 크기를 알아낸다음 같은 크기의 Bitmap을 만들고 그 안에 잘 정렬해서 String을 그린 후

이미지를 RowHeader의 (0, 0)에 그리는 수 밖에 없다.

다시 한 번 말하지만 참.. 별로다;;

 
신고
Posted by ParkPill 박필

 아.. 귀찮다. ㅡㅡ;

필요한 클래스는 세가지.

MarshalByRefObject를 상속하는 Class. 이 놈이 Server에서도 쓰이고 Client에서도 쓰인다.
RemoteObject : MarshalByRefObject

Server클래스에서는 아래 두 줄만 추가해주면 된다.

ChannelServices.RegisterChannel(new TcpChan());
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "TESTUri", WellKnownObjectMode.Singleton);

Client측에서는 아래 두 줄만 추가해주면 된다.

ChannelServices.RegisterChannel(new TcpChannel());
RemoteObject _rmtObject = (RemoteObject)Activator.GetObject(typeof(RemoteObject), "tcp://127.0.0.1:9999/TESTUri");


더 이상의 설명은 귀찮다. ㅡㅡ;
필요하면 아래 코드 다운받아 쓰시도록ㅎㅎ

물론 위의 방법은
Single Call, Singleton, Client Activated Object 중 Singleton이며

Code와 Configuration 방법 중 Code에 해당한다.

더 궁금한 사항이 있다면 아래의 글을 참조바란다. 아주 쥑이게 정리 잘 해놨다.

http://hoons.kr/Board.aspx?Name=cshaptip&Mode=2&BoardIdx=469&Key=&Value=

더보기



신고
Posted by ParkPill 박필





오토마타.

얼마전 string pad 한글 지원을 위해 찾아본 오토마타.

알고리즘과 같은 어떤 개념 같았는데 영 공부하기가 귀찮아서
 
아래 유니코드 한글 코드표를 보고 알고리즘을 만들어 버렸다.


LibHangul 이라는 오픈 소스도 찾았으나 사용법을 배우기 귀찮아서

역시 그냥 만들어 버렸다.


혹, 만들기가 더 귀찮거나 남이 만든거 공부해서 사용하는게 편한 사람은

받아가셔요~


그리고 역시 내가 나중에 쓸 수도 있기에 백업삼아 올려놓는다 ㅋㅋ

수고요~



- 유니코드 자모값의 코드표 : http://www.unicode.org/charts/PDF/U1100.pdf
- 유니코드 완성형 한글 코드표 : http://www.unicode.org/charts/PDF/UAC00.pdf


 

신고
Posted by ParkPill 박필

짧고 굵게 설명 들어간다.

 - const -
 const는 선언시 값이 할당되어야 한다.
 한 번 할당하면 바꿀 수 없는 '상수'인 것이다.
 private const int HEIGHT_OF_TOOL = 72;



 - readonly -
 readonly는 생성자에서 한 번 더 할당할 수 있다.
생성자가 오버로드 되면 값을 때에 따라 값을 달리 할 수 있는 것이다.
그래서인지 선언시 값을 할당하지 않아도 된다.
 private readonly int HEIGHT_OF_TOOL;

public ToolManager()
{
HEIGHT_OF_TOOL = 10;
}

public ToolManager(int height)
{
HEIGHT_OF_TOOL = height;
}

 
마지막으로 한 가지 덧붙이자면,

const는 static이다.

readonly는 아니다. 하지만 앞에 static 써주면 그만이다. ㅡㅡ;

그래서! readonly가 좋다.


아직도 이유가 애매한가?

readonly는 const가 할 수 있는 모든 일을 하면서

확장성을 가지고 있다는 말이다. C#에까지 와서 굳이 const를 쓸 일이 무어란 말인가.


더보기

신고
Posted by ParkPill 박필

보통 C#에서 Application.StartupPath 로 프로그램 시작 폴더를 얻어오는데 WPF에서는 Library가 달라서 불가능!

하지만 불가능이 어디있겠습니까? 당신이 솔로를 탈출하는 것만 빼면 말이죠.

아, 저도 솔로입니다. ㅋㅋ

... 아래와 같습니다!!

using System.Diagnostics;

...

string _configPath = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\LaunchingConfig.xml";



Process에 등록된 프로그램의 실행파일 경로를 가져오는 듯 보입니다. ㅋㅋ

그럼 수고들하시게요~
신고
Posted by ParkPill 박필


C#에서의 윈도우 이동과 다를 바 없다. 다만 한 가지 다른 점이 있다면,

Handle을 가져오는 방법이다.

new System.Windows.Interop.WindowInteropHelper(this).Handle

요정도 해줘야 핸들이 따라온다 ㅎㅎ

나머진 C#과 동일하므로 생략!!

모르면 같다 붙여보고, 컴파일해보고, 머 그러다보면 알게 되고 ㅎㅎ 수고요~



[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
public const int HT_CAPTION = 0x02;
public const int WM_NCLBUTTONDOWN = 0xA1;

protected override void
OnMouseDown(System.Windows.Input.MouseButtonEventArgs e){

            ReleaseCapture();
            SendMessage(new System.Windows.Interop.WindowInteropHelper(this).Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}

신고
Posted by ParkPill 박필

Graphics g = Graphics.FromHwnd(new System.Windows.Interop.WindowInteropHelper(this).Handle);

뭐 다른 설명 필요하신 분? ㅋㅋ

C# 에서 CreateGraphics() 이 WPF에 없습니다! 그래서 혹시나 필요하신 분들은 요놈을 쓰시면 됩니다.

어지간하면 Blend에서 다 가능하지만 또 고집스러운 사람들(나... ㅋㅋ)이 있기에 올려봅니다. ㅋㅋ

신고
Posted by ParkPill 박필


티스토리 툴바