깃헙을 최초에 만들때

username 을 잘못만들었다.;;

영어 순서가 뒤바뀌어 발음도 힘든 username 이 탄생되었다;;

방법은 깃헙에서 우측 상단의 내메뉴에서 Settings 로 진입한다.

여기에서 Account Change username 의 Change username 버튼을 클릭한다.

 

아래 처럼 경고 문장이 뜬다

이전에 사용했던 경로를 자동으로 연동해 주지 않고

연결되었던 프로젝트도 다시 연결을 해주어야한다.

바꿀 username 을 적는다.

혹 'Login is already taken' 이라는 메세지가 뜬다면 이미 사용중인 username 이므로 다른 username 으로 변경해야한다.

변경완료 까지는 조금 시간이 걸린다.

변경이 완료되었다.

 

아래 내용은 DataGridView 의 row 를 마우스 드래그로 이동 시킬수 있는 코드입니다.

단, 직접 DataGridView 에 데이터를 작성해야 합니다. (아래 코드참고)

DataSource 에 데이터를 넣으면 에러가 발생됩니다.

            dataGridView.ColumnCount = 2;

            dataGridView.Columns[0].Name = "First";
            dataGridView.Columns[1].Name = "Last";
            dataGridView.Columns["First"].HeaderText = "First Name";
            dataGridView.Columns["Last"].HeaderText = "Last Name";
            dataGridView.Columns["First"].SortMode = DataGridViewColumnSortMode.Programmatic;
            dataGridView.Columns["Last"].SortMode = DataGridViewColumnSortMode.Programmatic;

            dataGridView.Rows.Add(new string[] { "공사명", "땡땡대학교 복도" });
            dataGridView.Rows.Add(new string[] { "공종", "토공" });
            dataGridView.Rows.Add(new string[] { "위치", "자재배송" });
            dataGridView.Rows.Add(new string[] { "내용", "노상다짐. 검측" });
            dataGridView.Rows.Add(new string[] { "일자", "2013.07" });

먼저 DataGridView 에 아래 처럼 이벤트를 먹이고 AllowDrop 을 True 합니다.

            this.dataGridView.MouseMove += dataGridView_MouseMove;
            this.dataGridView.MouseDown += dataGridView_MouseDown;
            this.dataGridView.DragOver += dataGridView_DragOver;
            this.dataGridView.DragDrop += dataGridView_DragDrop;
            this.dataGridView.AllowDrop = true;

그리고 아래 처럼 각 이벤트에 아래 처럼 코딩하면 row 를 이동시킬 수 있습니다.

        private Rectangle dragBoxFromMouseDown;
        private int rowIndexFromMouseDown;
        private int rowIndexOfItemUnderMouseToDrop;
        private void dataGridView_MouseMove(object sender, MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
            {
                if (dragBoxFromMouseDown != Rectangle.Empty &&
                    !dragBoxFromMouseDown.Contains(e.X, e.Y))
                {

                    DragDropEffects dropEffect = dataGridView.DoDragDrop(dataGridView.Rows[rowIndexFromMouseDown], DragDropEffects.Move);
                }
            }
        }
        private void dataGridView_MouseDown(object sender, MouseEventArgs e)
        {
            rowIndexFromMouseDown = dataGridView.HitTest(e.X, e.Y).RowIndex;
            if (rowIndexFromMouseDown != -1)
            {
                Size dragSize = SystemInformation.DragSize;

                dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2), e.Y - (dragSize.Height / 2)), dragSize);
            }
            else
                 dragBoxFromMouseDown = Rectangle.Empty;
        }
        private void dataGridView_DragOver(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }
        private void dataGridView_DragDrop(object sender, DragEventArgs e)
        {
 
            Point clientPoint = dataGridView.PointToClient(new Point(e.X, e.Y));

            rowIndexOfItemUnderMouseToDrop = dataGridView.HitTest(clientPoint.X, clientPoint.Y).RowIndex;

            if (e.Effect == DragDropEffects.Move)
            {
                DataGridViewRow rowToMove = e.Data.GetData(typeof(DataGridViewRow)) as DataGridViewRow;
                dataGridView.Rows.RemoveAt(rowIndexFromMouseDown);
                dataGridView.Rows.Insert(rowIndexOfItemUnderMouseToDrop, rowToMove);
            }
        }

1.       

        private Bitmap ConvertDataGridViewToBmp1(DataGridView dg)
        {
            int height = dg.Height;
            dg.Height = dg.RowCount * dg.RowTemplate.Height;

            Bitmap bitmap = new Bitmap(dg.Width, dg.Height);
            dg.DrawToBitmap(bitmap, new Rectangle(0, 0, dg.Width, dg.Height));

            dg.Height = height;

            return bitmap;
        }

 

2.

        [DllImport("gdi32.dll", ExactSpelling = true, CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool BitBlt(IntPtr pHdc, int iX, int iY, int iWidth, int iHeight, IntPtr pHdcSource, int iXSource, int iYSource, System.Int32 dw);
        private const int src = 0xCC0020;

        private Bitmap ConvertDataGridViewToBmp2(DataGridView dg)
        {
            this.dataGridView.ColumnHeadersVisible = false;
            this.dataGridView.RowHeadersVisible = false;

            dg.Refresh();
            dg.Select();

            Graphics g = dg.CreateGraphics();
            Bitmap bitmap = new Bitmap(dg.ClientSize.Width, dg.ClientSize.Height, g);
            Graphics g = Graphics.FromImage(bitmap);
            IntPtr bitmapHoc = g.GetHdc();
            IntPtr gHoc = g.GetHdc();

            BitBlt(bitmapHoc, 0, 0, dg.ClientSize.Width, dg.ClientSize.Height, gHoc, 0, 0, src);

            g.ReleaseHdc(gHoc);

            g.ReleaseHdc(bitmapHoc);

            return bitmap;
        }

가끔 코드를 가져다 쓸때 빈 줄이 너무 많아 코드 정리 할때

일일히 지우기가 힘들때가 있다.

아래처럼 찾아바꾸기 할때 (Ctrl+ Shift + H)

정규식을 사용하여 제거 하면 한번에 제거할 수 있다.

 

^(?([^\r\n])\s)*\r?$\r?\n

 

반드시 찾는 위치를 현재 문서로 해야한다

전체 솔루션을 하게되면 assembly 파일과 designer 등 자동으로 생성된 코드까지 다 제거해 버린다.

 

추가..

 

참고 링크 :

https://www.c-sharpcorner.com/blogs/how-to-remove-blank-lines-in-visual-studio1

https://www.codeproject.com/Articles/1087859/Web-crawling-with-Csharp-part-one

 

HTTPClientThread.zip

MVCSimpleServerApp.zip

 

            ProcessStartInfo startInfo = new ProcessStartInfo(filePath);
            startInfo.Verb = "edit";

            Process.Start(startInfo);

 

'C#.NET > C#' 카테고리의 다른 글

Visual Studio 2017 에서 코드상의 빈 줄 제거 하기  (0) 2018.04.24
Web crawling with C#  (0) 2018.04.17
(C#) 그림판 실행하기  (0) 2018.03.22
(C#) png 파일을 ico 파일로 만들기  (0) 2018.03.21
Win API  (0) 2018.03.18
FileSystemWatcher (폴더 모니터링 기능)  (3) 2018.03.15

png 파일을 ico 파일로 만들때가 많아졌다;

아래 코드를 이용해 윈폼프로그램 하나 만들어서 사용중..

Image image = Bitmap.FromFile(path);
String fileName = Path.ChangeExtension(path, "ico");
Stream IconStream = System.IO.File.OpenWrite(fileName);

Bitmap bitmap = new Bitmap(image);
bitmap.SetResolution(64, 64);
Icon icon = System.Drawing.Icon.FromHandle(bitmap.GetHicon());
icon.Save(IconStream);
IconStream.Close();

'C#.NET > C#' 카테고리의 다른 글

Web crawling with C#  (0) 2018.04.17
(C#) 그림판 실행하기  (0) 2018.03.22
(C#) png 파일을 ico 파일로 만들기  (0) 2018.03.21
Win API  (0) 2018.03.18
FileSystemWatcher (폴더 모니터링 기능)  (3) 2018.03.15
(C#) 나만의 커서(Cursor) 만들기  (0) 2018.03.06

Windows API 에 대한 내용이 있는 사이트

확장 툴로도 제공한다.

https://www.pinvoke.net/

'C#.NET > C#' 카테고리의 다른 글

(C#) 그림판 실행하기  (0) 2018.03.22
(C#) png 파일을 ico 파일로 만들기  (0) 2018.03.21
Win API  (0) 2018.03.18
FileSystemWatcher (폴더 모니터링 기능)  (3) 2018.03.15
(C#) 나만의 커서(Cursor) 만들기  (0) 2018.03.06
(C#) 방화벽 뚫기 코드  (0) 2018.03.03

FileSystemWatcher 로 지정된 폴더를 모니터링(감시) 할 수 있다.

로컬 및 네트워크 드라이브, 원격 파일까지 감시가 가능하다.

파일/폴더의 변경, 삭제, 수정 에 대해 감시가 가능하고

감시 대상(파일 폴더)에 대해 사이즈 변경, 이름 변경 등의 필터링이 가능하다

또한 특정 파일, 특정 확장자 기준으로 필터링 할수 있다.

 

(아래 예제는 간단하게 어느 특정 폴더에 파일이 추가된 경우 처리하는 코드입니다.)

        FileSystemWatcher fsw = new ileSystemWatcher();
        public FileSystemWatcherTestForm()
        {
            InitializeComponent();
        }

        private void directoryButton_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fd = new FolderBrowserDialog();
            if (fd.ShowDialog() == DialogResult.OK)
            {
                this.watchTextBox.Text = fd.SelectedPath;
            }
        }

        private void watchFolderButton_Click(object sender, EventArgs e)
        {
            fsw.Path = this.watchTextBox.Text;
            fsw.EnableRaisingEvents = true;
            fsw.Created += Fsw_Created;

            //fsw.NotifyFilter = System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName | System.IO.NotifyFilters.Size;
            //fsw.Changed += fsw_Changed;
            //fsw.Deleted += fsw_Deleted;
            //fsw.Renamed += fsw_Renamed;
        }

        /// <summary>
        /// FileSystemWatcher 가 바라보는 폴더에 파일이 추가된 경우 발생되는 이벤트입니다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Fsw_Created(object sender, FileSystemEventArgs e)
        {
            try
            {
                Invoke(new MethodInvoker(delegate ()
                {
                     this.copyListBox.Items.Add(e.Name);
                 }));
            }
            catch (Exception ex)
            {

            }
        }

 

FileSystemWatcherTest.zip

 

 

  1. Favicon of https://kjun.kr kjun.kr 2018.03.15 13:14 신고

    https://www.pinvoke.net/

  2. Favicon of https://kjun.kr kjun.kr 2018.03.15 13:24 신고

    http://csharphelper.com/blog/2017/12/use-debug-and-trace-listeners-in-c/

  3. Favicon of https://kjun.kr kjun.kr 2018.03.15 13:24 신고

    http://csharphelper.com/blog/2017/12/format-values-in-a-listbox-in-c/

커서 모양을 다른 걸로 변경하고 싶을때

.cur 파일을 만드는 방법이 있다.

하지만 번거롭다 그냥 이미지를 커서로 만드는 방법은 아래와 같다.

            Image image = Bitmap.FromFile("pen.png");
            Bitmap bitmap = new Bitmap(image);
            Graphics graphics = Graphics.FromImage(bitmap);
            IntPtr handle = bitmap.GetHicon();
            Cursor penCursor = new Cursor(handle);

 

'C#.NET > C#' 카테고리의 다른 글

Win API  (0) 2018.03.18
FileSystemWatcher (폴더 모니터링 기능)  (3) 2018.03.15
(C#) 나만의 커서(Cursor) 만들기  (0) 2018.03.06
(C#) 방화벽 뚫기 코드  (0) 2018.03.03
How to generate a PDF from HTML using wkhtmltopdf with C# in WinForms  (0) 2018.03.02
RabbitMQ - 링크  (0) 2018.02.28

+ Recent posts