[ C#] 고급 컨트롤 (리스트 뷰, 트리뷰, 웹브라우저)
나는 UI 가지고 노는 이런 컨트롤쪽 공부가 더 재밌다...;;흑 ㅠㅠ
------------------------어제 밤 교재로는 한 번 쭉 살펴본 것들 정리할 공간 -----------------------------
<ListView>
1.폼 디자인
레이블 3개 , 텍스트박스 3개 , 버튼 2개 (입력,삭제), 리스트 뷰1개(ColumnHeader 속성-> 이름,휴대폰,소속 width 200,150,150 설정)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ListView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 추가
private void btnInsert_Click(object sender, EventArgs e)
{
//이름,전화번호,회사 텍스트박스가 1개라도 빈값이면 입력채우라고 메세지 띄우기
if (tbName.Text =="" || tbPhone.Text == "" || tbOrg.Text == "")
{
MessageBox.Show("입력 안한 곳을 전부 채워주세요.");
}
else // 전부 채워지면
{
//string 배열 선언
string[] strArray = new string[]
{ tbName.Text, tbPhone.Text, tbOrg.Text};
ListViewItem lvt = new ListViewItem(strArray);
listView1.Items.Add(lvt);
tbName.Clear();
tbPhone.Clear();
tbOrg.Clear();
}
}
//삭제
private void btnDelete_Click(object sender, EventArgs e)
{
int selectedIndex = listView1.FocusedItem.Index; // 리스트박스에 포커스된 아이템의 INDEX를
// selectedIndex 정수형 변수에 할당
// RemoveAt() 메소드는 포커스된 아이템의 인덱스를 전달함으로 리스트 뷰의
//선택되어있는 아이템을 삭제한다.
listView1.Items.RemoveAt(selectedIndex);
}
}
}
<TreeView>
: 트리뷰는 데이터나 정보를 계층적 구조로 보여주는 컨트롤이다.
0. 트리 뷰의 속성과 내용
1.폼 디자인
트리뷰 1개, 텍스트박스1개, 버튼 5개 배치
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace TreeView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 추가 버튼 클릭시
private void btnAdd_Click(object sender, EventArgs e)
{
//트리노드 라는 node1 객체 생성
TreeNode node1 = new TreeNode(tbNode.Text); // 텍스트 박스의 입력을 인자로받음
//트리뷰의 선택된 노드가 있는지 뷰의 속성인 SelecteNode로 확인
if(treeView1.SelectedNode != null && treeView1.SelectedNode.IsSelected)
{
treeView1.SelectedNode.Nodes.Add(node1);
}
else
{
treeView1.Nodes.Add(node1);
}
}
// 삭제 버튼 클릭시
private void btnDelete_Click(object sender, EventArgs e)
{
//트리뷰의 선택된 노드가 있는지 뷰의 속성인 SelecteNode로 확인
if (treeView1.SelectedNode != null && treeView1.SelectedNode.IsSelected)
{
treeView1.SelectedNode.Remove();
}
}
// 확장 버튼 클릭시
private void btnExpandAll_Click(object sender, EventArgs e)
{
treeView1.ExpandAll();
}
// 축소 버튼 클릭시
private void btnCollapseAll_Click(object sender, EventArgs e)
{
treeView1.CollapseAll();
}
//트리노드 타입의 리스트 객체 생성 -> 트리 전체의 각 노드 체크 여부를 확인하기 위해
// 리스트 객체를 이용한다.
List<TreeNode> chkNodes = new List<TreeNode>();
//체크항목만 삭제하는 버튼 클릭시
// 메소드 생성
void RemoveCheckedNodes(TreeNodeCollection nodes)
{
//foreach 반복문은 List와 같은 제네릭 객체의 요소를 처음부터 마지막까지 읽어 들일 수 있다.
// 전달인자로 받은 TreeNodeCollection 객체의 노드 요소를
// 처음부터 끝까지 읽어 들이면서 체크 여부를 확인해서
// chkNodes에 추가합니다. (체크된것만 추가됨)
// 그렇지 않으면 (else)
//RemoveCheckedNodes(node.Nodes); 메소드를 호출하여
// 현재 노드의 하위 노드를 체크합니다.
foreach (TreeNode node in nodes)
{
if (node.Checked)
{
chkNodes.Add(node);
}
else
{
RemoveCheckedNodes(node.Nodes);
}
}
// 체크된 것들이 모인 chkNodes 를 처음부터 마지막까지 반복하면서
// 노드를 지운다.
foreach(TreeNode chknode in chkNodes)
{
nodes.Remove(chknode);
}
}
private void btnChkDelete_Click(object sender, EventArgs e)
{
// RemoveCheckedNodes 메소드를 호출한다.
RemoveCheckedNodes(treeView1.Nodes);
}
}
}
<웹브라우저>
웹상의 사이트를 불러오는 컨트롤를 이용해보겠다.
추가할 컨트롤
: 레이블1개 (주소 입력: )
텍스트박스 1개
버튼 1개
웹 브라우저 컨트롤 1개
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WebBrowser
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnGo_Click(object sender, EventArgs e)
{
//tbAddress 에 입력한 주소로 네비게이트 (이동) 메소드
webBrowser1.Navigate(this.tbAddress.Text);
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
MessageBox.Show("웹 사이트 로딩이 완료되었습니다.");
}
private void tbAddress_KeyDown(object sender, KeyEventArgs e)
{
// 주소 입력하고 해당 텍스트박스에서 지정 키를 클릭하면 [이동]버튼 호출
if (e.KeyCode == Keys.Enter)
{
webBrowser1.Navigate(this.tbAddress.Text);
}
}
}
}
[C# Application] - How to make a WhatsApp Messenger _ FoxLearn채널 (목표기한: 10.31) (2) | 2024.10.29 |
---|---|
[C#] Directory 클래스, DirectoryInfo 클래스, File 클래스 , FileInfo클래스_ 최종: 파일탐색기 만들기 (0) | 2024.10.27 |
[ C#] 기본 컨트롤 (Form, 체크박스,라디오버튼,그룹박스,텍스트박스,리스트박스와콤보박스) (2) | 2024.10.27 |
[C#] String 클래스 + 문자열 관리 메소드 표 제공 (0) | 2024.10.27 |
[C#] 이벤트 (0) | 2024.10.27 |