블로그 이미지
likeban

calendar

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

Notice

2012.08.08 09:40 IT


- FillLayout


- RowLayout


- GridLayout


- FormLayout



참고 사이트

http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html

저작자 표시 비영리 변경 금지
신고
posted by likeban
2012.07.02 17:05 IT


MSRDS(Microsoft Robotics Dev Studio 4)를 설치후, 간단한 프로젝트를 만들어서 실행해보았더니,

계속 아래와 같은 에러가 발생하였다.


Timeout while waiting for the DSS to start


한참을 헤매다가 드디어 문제를 해결하였는데, 해답은 바로 닷넷 프레임워크 4.0이었다.


MSRDS가 깔려있는 폴더를 살펴보면 bin이라는 폴더가 있다.


bin폴더 내부를 보면, "DssHost32.exe" 파일이 있다.


이 파일을 실행시켜보니, 닷넷 4.0이 깔려있지 않아 실행시킬 수 없으니 다운받아서 설치해라. 라는 메세지가 뜨면서 실행이 되지 않았다.


저와 같은 에러가 뜨시는 분들은 닷넷 버전을 체크해보시면 좋을 것 같습니다.

저작자 표시 비영리 변경 금지
신고
posted by likeban
2012.06.20 17:22 IT


오랜만에 VS를 하려니 단축키가 하나도 기억나지 않는다.

기록해두고 생각나지 않을 때 보고 활용해야겠다.


F12                    // 함수원형으로 가기

Ctrl + F12            // 함수 선언으로 가기

Ctrl + K + C         // 주석처리

Ctrl + K + U         // 주석해제

Shift + Alt + Enter // 전체화면, 보통 화면

Ctrl + M + M       // 함수숨기기(한줄로)

Ctrl + Spacebar  // 함수, 매개변수 리스트

Ctrl + U              // 선택된 문자 소문자로

Ctrl + Shift + U    // 선택된 문자 대문자로

Alt + F7              // 프로젝트 속성

 

Ctrl + L             // 한줄 자르기

Ctrl + ->             // 다음문자로 이동

Ctrl + <-             // 이전문자로 이동

Ctrl + G              // 라인 찾아 이동

Ctrl + ]              // 짝 따라가기


F2                     // 북마크 찾아 가기

Ctrl + F2            // 북마크 설정

Ctrl + Shift + F2   // 북마크 해제


찾기

Ctrl + F               // 찾기

F3                     // 현재 커서 다음 위치에서 찾음

Shift + F3            // 현재 커서 이전 위치에서 찾음

Ctrl + H              // 찾아서 바꾸기(단어바꾸기)

Ctrl + i               // 아래 방향으로 단어 찾기

Ctrl + Shift + i     // 위 방향으로 단어 찾기

Ctrl + F3            // 선택한 문자열 찾기(커서 다음)

Ctrl + Shift + F3   // 선택한 문자열 찾기(커서 이전)

 

디버깅

F5                      // 디버깅시작, 다음브레이크포인트까지 실행

F9                      // breakpointer

Ctrl + Shift + F9    // 모든 브레이크 포인터 해제

F10                     // 한줄씩 실행

F11                     // 함수프로시저안까지 실행

Shift + F5             // 디버깅 종료

 

빌드, 실행 

F7                 // 빌드

Ctrl + Break    // 빌드 중지

Ctrl + F5         // 디버깅하지 않고 실행

Ctrl + F7         // 빌드, 컴파일

저작자 표시 비영리 변경 금지
신고
posted by likeban
2011.12.22 16:35 IT


어플 소개는 아니구요.

플레이스테이션용 무선 컨트롤러와 휴대폰을 블루투스를 이용하여 연결한 동영상입니다.

아이디어 정말 괜찮은 것 같습니다.ㅋㅋ

저작자 표시 비영리 변경 금지
신고
posted by likeban
2011.11.21 12:41 IT


경로에 한글이 포함되어 있어서 발생하는 에러로
경로에 포함되어 있는 한글을 영문으로 바꿔주면 쉽게 해결할 수 있다.

또 다른 방법으로는 메모장에서 프로젝트.csproj 파일을 열어서 아래의 코드를 추가해주면 된다.
<PropertyGroup>
<TrackFileAccess>false</TrackFileAccess>
</PropertyGroup>
저작자 표시 비영리 변경 금지
신고
posted by likeban
2011.11.01 15:17 IT


아래의 메소드를 사용하면 된다.
마지막의 ignoreCase는 대소문자 구별을 하여서 검사할 것인지를 정하는 값이다.

object Enum.Parse(System.Type enumType, string value, bool ignoreCase);



enum ENUMBER
{
     One,
     Two,
     Three


첫번째 방법) 순수히 치환작업만을 한다.

ENUMBER eNum = (ENUMBER) Enum.Parse(typeof(ENUMBER), "One", true);



두번째 방법) 문자열이 enum에 포함되어 있는지 여부를 판단하여 처리한다.

if(Enum.IsDefined(typeof(ENUMBER), "One"))
     ENUMBER eNum = (ENUMBER)Enum.Parse(typeof(ENUMBER), "One", true);
else
     MessageBox.Show("Error");



 
저작자 표시 비영리 변경 금지
신고
posted by likeban
2011.10.28 14:53 IT


Form에 ListView를 추가합니다.
그리고 생성된 ListView에 DoubleClick 이벤트를 추가합니다.

ListView의 DoubleClick 이벤트는 ListView가 가지고 있는 Item에 관하여서만 발생되는 이벤트입니다.
더욱 구체적으로 설명하자면, 왼쪽의 이미지처럼 ListView에 데이터가 있어서 그 데이터를 더블클릭하면 이벤트가 발생합니다.
하지만, 오른쪽처럼 데이터가 하나도 없는 상태에서는 아무리 더블클릭을 해도 DoubleClick 이벤트가 발생하지 않습니다.

[##_1L_##]          


만약 ListView자체에 DoubleClick 이벤트를 주고 싶다면 좀 번거롭더라도 새로 함수를 만들어야 합니다.

우선 ListView의 속성에서 MouseDown 이벤트를 추가합니다.
MouseDown 이벤트는 ListView의 어느곳을 클릭해도 호출됩니다.


그리고 생성된 MouseDown 이벤트 함수에 아래의 소스를 추가합니다.

        static bool bLogNetworkClickCnt = false;

        static long logNetworkClickTimer= 0;

        private void lv_logNetwork_MouseDown(object sender, MouseEventArgs e)

        {


            if (!bLogNetworkClickCnt)

            { 

                logNetworkClickTimer =DateTime.Now.Ticks;

                bLogNetworkClickCnt = true;

            }

            else

            {

                if (((System.DateTime.Now.Ticks - logNetworkClickTimer) / 10000) < 500)

                {

                    bLogNetworkClickCnt = false;

                    // 더블클릭시 해줄 기능을 추가합니다.

                }

                else

                {

                    bLogNetworkClickCnt = false;

                }

            }

        }

 
 
저는 TickTimer을 사용하여서 0.5초안에 Mousedown 이벤트가 두번 호출되면 더블클릭으로 인식되도록 코딩하였습니다.
저작자 표시 비영리 변경 금지
신고
posted by likeban
2011.10.28 14:53 IT


Form에 ListView를 추가합니다.
그리고 생성된 ListView에 DoubleClick 이벤트를 추가합니다.

ListView의 DoubleClick 이벤트는 ListView가 가지고 있는 Item에 관하여서만 발생되는 이벤트입니다.
더욱 구체적으로 설명하자면, 왼쪽의 이미지처럼 ListView에 데이터가 있어서 그 데이터를 더블클릭하면 이벤트가 발생합니다.
하지만, 오른쪽처럼 데이터가 하나도 없는 상태에서는 아무리 더블클릭을 해도 DoubleClick 이벤트가 발생하지 않습니다.

[##_1L_##]          


만약 ListView자체에 DoubleClick 이벤트를 주고 싶다면 좀 번거롭더라도 새로 함수를 만들어야 합니다.

우선 ListView의 속성에서 MouseDown 이벤트를 추가합니다.
MouseDown 이벤트는 ListView의 어느곳을 클릭해도 호출됩니다.


그리고 생성된 MouseDown 이벤트 함수에 아래의 소스를 추가합니다.

        static bool bLogNetworkClickCnt = false;

        static long logNetworkClickTimer= 0;

        private void lv_logNetwork_MouseDown(object sender, MouseEventArgs e)

        {


            if (!bLogNetworkClickCnt)

            { 

                logNetworkClickTimer =DateTime.Now.Ticks;

                bLogNetworkClickCnt = true;

            }

            else

            {

                if (((System.DateTime.Now.Ticks - logNetworkClickTimer) / 10000) < 500)

                {

                    bLogNetworkClickCnt = false;

                    // 더블클릭시 해줄 기능을 추가합니다.

                }

                else

                {

                    bLogNetworkClickCnt = false;

                }

            }

        }

 
 
저는 TickTimer을 사용하여서 0.5초안에 Mousedown 이벤트가 두번 호출되면 더블클릭으로 인식되도록 코딩하였습니다.
저작자 표시 비영리 변경 금지
신고
posted by likeban
2011.10.25 13:38 IT


안녕하세요?

 

Control  클래스에 보면, 다음과 같은 메소드가 있습니다.

protected void SetStyle(
        ControlStyles flag,
        bool value
)
이 메소드를 다음과 사용한다면
this.SetStyle(ControlStyles.DoubleBuffer | 
      ControlStyles.UserPaint | 
      ControlStyles.AllPaintingInWmPaint,
      true);
   this.UpdateStyles();
더블 버퍼링이 되는, 컨테이너 (폼 또는 패널) 가 됩니다.
여기까지는 잘 알고 계실겁니다.

문제는 패널에 있습니다.
폼 디자이너를 통해서 생성했다던지, 아니면 직접 코딩해서 집어 넣었든 간에,
다음과 같은 패널을 가정해 보겠습니다.
public class FormXXX : Form
{

     private System.Windows.Forms.Panel panel_Original;

     .....

     .....

    

     public FormXXX()

     {

         ....

         this.panel_Original = new System.Windows.Forms.Panel();
         ....

         ....

         ....

         panel_Original.SetStyle(~~~~~~~);   //SetStyle 메소드 호출 불가. 인텔리센스에도

                                                                //안나옴

         ....

         ....

     }

 

}

 

이렇게 되면, 패널에는 더블 버퍼링을 적용할 수 없게 되죠....

 

아! 그러면, 패널에는 윈폼 자체에서 제공하는 더블 버퍼링을 쓸 수 없다는 건가요?

 

아닙니다!

 

다시 한 번 , SetStyle 메소드를  살펴 보겠습니다.

protected void SetStyle(
        ControlStyles flag,
        bool value
)
여기서, 주목해야 할 점이 있는데, 바로 protected 라는 접근 변경자를 봐야 합니다.
멤버가 protected 접근 변경자로 지정되면,
외부 클래스에는 접근할 수 없으나, 파생된 클래스에서는 접근가능합니다.
자! 그러면
이렇게 해보시면 어떨까요?
public class DoubleBufferedPanel : Panel
{
   public DoubleBufferedPanel()
   {
     this.SetStyle(ControlStyles.AllPaintingInWmPaint
                   | ControlStyles.OptimizedDoubleBuffer, true);
   }
}
폼처럼, Panel 클래스를 상속하여, 그 안의 생성자에서 더블 버퍼링 관련 코드를 적는 것입니다.
이제는 Panel 클래스가 아닌 DoubleBufferedPanel 클래스를 사용하면 됩니다.
차이는, 하나는 더블 버퍼링이 안되고, 다른 하나는 더블 버퍼링이 된다는 겁니다.

public class FormXXX : Form
{
     private DoubleBufferedPanel panel_Original;
     .....
     .....
    
     public FormXXX()
     {
         ....
         this.panel_Original = new DoubleBufferedPanel ();
         ....
         ....
         ....


// 이제 아래와 같은 코드는 필요없음. 어차피 호출도 않되는 거지만..



         //panel_Original.SetStyle(~~~~~~~);  

         ....
         ....

     }
 
}
다 됐습니다.
패널에 더블 버퍼링이 적용되었습니다.
소스 코드를 이와 유사하게 고쳐서
테스트 해보세요.
번쩍거리는 현상이 없어질 겁니다.


출처 : http://blog.naver.com/wavelee?Redirect=Log&logNo=100059298319

panel을 동적으로 만드신 것이 아니라면
.Designer.cs라는 확장자를 가진 파일에서 this.panel = new System.Windows.Forms.Panel();  의 형식으로 panel 객체를 선언한 부분이 있습니다.
이 부분을  this.panel = new DoubleBufferedPanel(); 로 수정하시면됩니다.
저작자 표시 비영리 변경 금지
신고
posted by likeban
2011.10.17 15:05 IT


PC의 물리적 주소가 필요할 경우가 있다.
NetworkInterface를 사용하여 물리적 주소를 알아 올 수 있다.

    class CMacAddressManager

    {

        string m_strMacAddress;

        NetworkInterface[] m_adapters;


        public CMacAddressManager()

        {

            m_strMacAddress = string.Empty;

            m_adapters = NetworkInterface.GetAllNetworkInterfaces();

            foreach (NetworkInterface adapter in m_adapters)

            {

                PhysicalAddress pa = adapter.GetPhysicalAddress();

                if ((pa != null) && (!pa.ToString().Equals("")))

                {

                    m_strMacAddress = pa.ToString();

                    break;

                }

            }

        }


        public string macAddress

        {

            get { return m_strMacAddress; }

        }

    }


저작자 표시 비영리 변경 금지
신고
posted by likeban
2011.10.06 14:25 IT


VC++로 작업할 때에는 더블 버퍼링을 설정할 때에 수작업으로 해줘야해서 번거로웠었는데....
C#은 인터넷 뒤적뒤적 해보니, 단 3줄의 코딩만 추가해주면, 자동으로 더블 버퍼링을 해주네.
초기화할 때 아래의 코드를 추가하도록 하자.

SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
저작자 표시 비영리 변경 금지
신고
posted by likeban
prev 1 2 3 next

티스토리 툴바