이번 프로젝트를 하면서 컨트롤을 만드는 과정에서 DataGridView Column Header 에 Context Menu를 붙여야만 했습니다. 
저 메뉴상에 필터링 조건을 메뉴에 집어 넣어야 하고 Sorting 메뉴도 넣어야하고...

근데 훔... 컨텍스트 메뉴를 붙여야 하는데 어떻게 붙여야 할지 난감했죠.

그래서 헛짓도 참 많이 했네요.

맨땅에 헤딩도 많이하고... ㅡㅡ'
 
찾다찾다 이런게 있더군요...




DataGridView 컨트롤에 GetColumnDisplayRectangle 라는 메소드가 있더라고요.
Rectangle 을 반환하는... 내가 찾고 있던... 드뎌 찾아냈습니다. 

근데 뭐 이거 보다 더 좋은 방법이 있는 거 아냐? ㅡㅡ'

하이간 이걸 쓰니 잘 되네요...

    Private Sub DataGridView1_ColumnHeaderMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick

        If e.Button = Windows.Forms.MouseButtons.Right Then

            Dim rect As Rectangle = Me.DataGridView1.GetColumnDisplayRectangle(e.ColumnIndex, True)

            Me.ContextMenuStrip1.Items.Clear()
            Me.ContextMenuStrip1.Items.Add(Me.DataGridView1.Columns(e.ColumnIndex).HeaderText)
            Me.ContextMenuStrip1.Items.Add("Woojja")
            Me.ContextMenuStrip1.Items.Add("Fighting")
            Me.ContextMenuStrip1.Items.Add("-")
            Me.ContextMenuStrip1.Items.Add("Nice")
            Me.ContextMenuStrip1.Items.Add("MHVB")

            Dim p As Point = New Point(rect.X, Me.DataGridView1.ColumnHeadersHeight)

            Me.ContextMenuStrip1.Show(Me.DataGridView1.PointToScreen(p))

        End If

    End Sub



한번 보시고 다른 좋은 방법이 있으면 알려주셔요...




행복한 고수되세요... ^^



woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


반응형


이데일리에서 퍼왔습니다.

`MS 6년만의결실`..테이블보컴퓨터공개


 
입력 : 2007.05.31 02:59


[뉴욕=이데일리김기성특파원] `컴퓨터는진화한다. 상자모양의컴퓨터시대는이제끝났다`

30일(현지시간) 월스트리저널(WSJ) 후원으로캘리포니아칼스배드에서열린 기술컨퍼런스에서마이크로소프트부터실리콘밸리 IT업체들까지새로운형태의컴퓨터를대거전시했다.

특히마이크로소프트가빌게이츠회장의주문으로지난 6년동안심혈을기울여탄생시킨테이블보모양의컴퓨터(사진)는최대관심대상으로꼽히고있다.

이컴퓨터는터치스크린방식을채택하고있으며사진을진열하고게임을즐길수있는등의기능을담고있다.

마이크로소프는올해말공식판매에들어갈예정이다. 초기에는호텔과카지노용이주류를이룰것으로전망된다.

라이브스크라이브(Livescribe)는음성녹음을문서화할수있는펜모양의컴퓨터를내놓았다.

팜(Palm)은이회사가새로운분야라고말하는휴대기기를공개할예정이다. 아직까지알려진것은거의없지만전문가들은팜의종전제품보다다소크고무선네트워킹기능을포함하고있을것으로예상하고있다.

이번컨퍼런스전시회에선보인제품들은컴퓨터모양을바꾸기위한업체들의크고작은시도에비하면일부분에불과하다. 예를들어휴렛패커드의터치스마트는키보드없이요리법이나전화번호를찾을수있는등의기능을가진부엌용으로고안됐다. 가격은 1800달러다.

WSJ은특히컴퓨터운영체제(OS)와마이크로프로세서시장에서각각거의독점적지위를갖고있는마이크로소프트와인텔이이같은컴퓨터의새로운용도및디자인개발에박차를가하고있다고전했다.

반응형
현재 C# 으로 프로젝트를 하니라고 맨땅에 열심히 헤딩하고 있다.
그러다가 
이런 문장을 봤다. ㅡㅡ'

    public woojja1(string str)
      :this()

woojja1(string str) 은 Constructor 다.
그런데...

:this()는 뭐냐? VB.NET 개발자들에게는 생소하리라 생각된다...
이게 어떤 버젼부터 튀어나왔는지도 모르겠다.(아시는 분 알려주셔요. 1.1 부터인가?)

보니. Default Constructor 를 호출하는 문장이다.

woojja1(string str)보다 woojja1() 을 먼저 실행하게끔 한다.
그렇기 때문에  woojja1() Default Constructor 를 주석처리하게되면 에러가 발생하게된다.
기본적으로 Default Constructor를 호출해야하는데 명시적으로 존재하지 않기 때문에 에러가 발생하는 것이다.

하지만...

reference type 이 아닌 value type 이라면 이야기가 달라진다.
아래 woojja2 가 그 예인데...
일단 아래의 woojja2 structure 의 주석을 풀고 Code를 컴파일 또는 실행하게 되면  structure 는 Parameter 가 없는 Constructor는 명시적으로 포함할 수 없다는 에러메시지가 발생하며 주석있는 대로 컴파일 혹은 실행을 시켜도 에러가 발생하지 않는 것을 알 수 있다.

이런 부분은 단순히 parameter 가 있는 Constructure 내부에서 Default Constructure를 호출할 수있지만
이런 식으로 Default Constructure 를 호출하게 되면 코드 실행순서에 대한 예기치 않은? 에러를 방지할 수 있으리라 생각된다.

VB.NET 에도 포함되어있다면 조금은 편리할 수 있으리라 생각된다. 
(있는데 내가 못찾는 건가? ^^'  그렇다면 알려주셔요... )


아래는 작성해 본 코드입니다.
디버깅을 걸어놓고 코드진행을 눈으로 살펴보시면 이해하기가 훨 나으리라 생각됩니다.
^^ 

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      woojja1 w1 = new woojja1("woojja");
      woojja2 w2 = new woojja2("woojja");
      Console.ReadLine();
    }
  }


  class woojja1
  {
    public woojja1()
    {
      Console.WriteLine("woojja 1 Default");
    }
    public woojja1(string str)
      :this()
    {
      Console.WriteLine("woojja 1");
    }
  }

  struct woojja2
  {
    //public woojja2()
    //{
    //  Console.WriteLine("woojja 2 Default");
    //}
    public woojja2(string str)
      : this()
    {
      Console.WriteLine("woojja 2");
    }
  }
}



행복한 고수되세요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형

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

[C#] How do you check if a file is in use?  (0) 2017.07.27
[C#] 단일 Process 실행  (2) 2010.11.08
[C#] C# 은 VB.NET 따라쟁이...  (3) 2009.05.07
[C#] C# 컴파일러 오류  (0) 2009.03.06
[C#] Yield  (0) 2009.03.06

+ Recent posts