Devpia 의 어느분께서 질문을 올리셨습니다.

질문은...

텍스트 박스에 텍스트를 세로 정렬하고 싶은데...
텍스트 박스나 라벨의 경우 세로 정렬이 가능한가요? 가로 말고 세로로 쓰고 싶은데....

라고요...

블로그에서 확인하라고 했는데 오래 기다리셨습니다. ^^'


잠시 생각을 했죠... 잔머리를 굴려서... ㅋㅋ

그리고 걍 테스트 해 봤습니다.
원하는 기능인지는 모르겠으나 비스므리하게는 한 것 같습니다.

수정을 원하시면 아래 코드를 보고 다시 수정할 수 있겠죠... ^^


요는 이렇습니다.

폼에 텍스트 박스하나를 올려놓습니다.
그리고 아래와 같이 KeyUp 이벤트를 등록, 구현해 줍니다.

    Private Sub TextBox1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp

        If e.KeyCode = Keys.Enter Then
            Dim strText() As String
            Dim str As String = Me.TextBox1.Text.Replace(ControlChars.Lf, "")

            strText = str.Split(ControlChars.CrLf)
            'Array.Sort(strText)
            TextBox1.Text = ""

            Dim strList As List(Of String) = New List(Of String)

            For i As Integer = 0 To strText.Length - 2
                If LTrim(strText(i).Length) = 1 Then
                    If Asc(LTrim(strText(i))) = 10 Then
                        Continue For
                    End If
                End If
                Dim strTemp As String = strText(i).Replace(ControlChars.Lf, "")
                strList.Add(strText(i))
            Next
            strList.Sort()

            For Each s As String In strList
                TextBox1.Text &= s & ControlChars.CrLf
            Next

        End If
    End Sub
End Class


아 그리고 이걸 User Control로 만들어 보셔요... ^^
그건 나중에 해보도록 하죠... ^^'

행복한 고수되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형
Refactor 가 새로 릴리즈 됐습니다.

나온지 쫌 됐지만 그래도 아직 미지근합니다. ㅋㅋㅋ





행복한 고수되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형
XML Document 만들기 부터 Node 접근까지...


간단한 것이지만...
뭐 그리 뚜렷하게 풀어 설명해 놓은 것도 없기에...
그렇다고 자세히 설명 하는 것은 아니지만...

조그만 프로그램을 하나 만들고

소스를 디버깅하면서 아하... 이렇게 접근을 하는 구나 라고 느끼실 수 있을 것 같습니다.

만들 프로그램... 역시 그리 대단하지 않습니다.


 


폼하나 여시고 버튼세개를 올립니다.

비하인드 코드창에는 

Imports System.Xml

를 추가합니다.

XML 을 사용할 것이니 당연하겠죠..

그리고 



<?xml version="1.0" encoding="euc-kr"?>
<Filters />

이런 Filters Root Entity만 들어가 있는 XML 파일을 하나 만듭니다.
그리고 'UserFilter.xml" 이라는 이름으로 저장을 하시고

어플폴더에 복사를 해 놓습니다.

그리고 차례로 버튼을 더블클릭하여 이벤트 코드를 만드시고
아래의 소스를 복사해서 넣습니다.


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        doc = New XmlDocument()

        If (Not System.IO.File.Exists("Filter.xml")) Then
            doc.Load("UserFilter.xml")
        Else
            doc.Load("Filter.xml")
        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim root As XmlNode = doc.DocumentElement

        For k As Integer = 0 To 2 Step 1

            Dim xeFilter As XmlElement = doc.CreateElement("Filter")
            Dim xeFilterName As XmlElement = doc.CreateElement("Name")

            Dim xeColumnFilters As XmlElement = doc.CreateElement("ColumnFilters")

            For j As Integer = 0 To 5 Step 1

                Dim xeColumnFilter As XmlElement = doc.CreateElement("ColumnFilter")
                Dim xaColumnName As XmlAttribute = doc.CreateAttribute("ColumnName")
                Dim xaLogicalOperation As XmlAttribute = doc.CreateAttribute("LogicalOperation")
                xaColumnName.InnerText = "CoumnName" + j.ToString()
                xaLogicalOperation.InnerText = "LogicalOperation" + j.ToString()
                xeColumnFilter.Attributes.Append(xaColumnName)
                xeColumnFilter.Attributes.Append(xaLogicalOperation)

                For i As Integer = 0 To 3 Step 1

                    Dim xeFilterCondition As XmlElement = doc.CreateElement("FilterCondition")
                    Dim xaComparisonOperator As XmlAttribute = doc.CreateAttribute("ComparisonOperator")
                    Dim xaCompareValue As XmlAttribute = doc.CreateAttribute("CompareValue")
                    xaComparisonOperator.InnerText = "ComparisonOperator" + i.ToString()
                    xaCompareValue.InnerText = "CompareValue" + i.ToString()
                    xeFilterCondition.Attributes.Append(xaComparisonOperator)
                    xeFilterCondition.Attributes.Append(xaCompareValue)

                    xeColumnFilter.AppendChild(xeFilterCondition)
                Next

                xeColumnFilters.AppendChild(xeColumnFilter)
            Next
            xeFilter.AppendChild(xeFilterName)
            xeFilterName.InnerText = "woojja" + k.ToString()

            xeFilter.AppendChild(xeColumnFilters)

            root.AppendChild(xeFilter)

        Next
        doc.Save("Filter.xml")

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim root As XmlNode = doc.DocumentElement

        Dim xmlColumnFilterList As XmlNodeList = root.SelectNodes("Filter[Name='woojja1']")
        xmlColumnFilterList = root.SelectNodes("Filter[Name='woojja1']/ColumnFilters")
        xmlColumnFilterList = root.SelectNodes("Filter[Name='woojja1']/ColumnFilters/ColumnFilter")

        For Each columnFilterNode As XmlNode In xmlColumnFilterList

            Dim strColumnName As String = columnFilterNode.Attributes("ColumnName").Value
            Dim strLogicalOperation As String = columnFilterNode.Attributes("LogicalOperation").Value

            Dim filterConditionList As XmlNodeList = columnFilterNode.SelectNodes("FilterCondition")

            For Each filterConditionNode As XmlNode In filterConditionList

                Dim strComparisonOperator As String = filterConditionNode.Attributes("ComparisonOperator").Value
                Dim strCompareValue As String = filterConditionNode.Attributes("CompareValue").Value
            Next
        Next
    End Sub


흑... 복사해 놓고 보니 토나올것 같군요... ㅡㅡ'

코드창에 복사해 넣으면 그리 나쁘진 않습니다.

그리고 위 빨갛게 칠해 놓은 부분에 BreakPoint 를 거신후에..

버튼 1, 2, 3번을 차례로 클릭합니다.

1번에서 에러나시는 분들... 꼭있습니다.
걍 적당히 xml 파일을 이동시켜 놓으세요. ㅋㅋㅋ (알아서 좀 하세요.)

버튼 2번은 내용은 잘 보시면 XML 의 Element와 Attribute 를 어떻게 추가하는지 아실 수있습니다.

그리고 버튼 3번은 Element 와 Attribute 를 어떻게 접근하는 지 아실 수 있는데...

BreakPoint 를 찍으라는 이유는...

        root.SelectNodes("Filter[Name='woojja1']")
        root.SelectNodes("Filter[Name='woojja1']/ColumnFilters")
        root.SelectNodes("Filter[Name='woojja1']/ColumnFilters/ColumnFilter")

XPath 를 어떻게 사용할 수 있는지 사용방법을 보시라고...

역시 허접한 정리였습니다.





부디 행복한 고수되셔요...



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


Root 2008-04-22 오전 10:18:20
비주얼베이직에서 XML 다루는 예제를 찾고 있었는데 많은 도움이 되었습니다. 감사해요 ^^
반응형

+ Recent posts