본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

WPF & C# - 배열로 폴더 Path 이동하기 ( array / path / folder / Directory / 디렉토리 / DirectorySeparatorChar / Environment.CurrentDirectory )

728x90
반응형


 WPF & C# - 배열로 폴더 Path 이동하기 ( array / path / folder / Directory / 디렉토리 / DirectorySeparatorChar / Environment.CurrentDirectory )



test_path.zip




MainWindow.xaml



1
2
3
4
5
6
7
<Button x:Name="btn" Content="현재폴더" HorizontalAlignment="Left" Margin="90,42,0,0" VerticalAlignment="Top" Width="75" Click="btn_Click"/>
<Button x:Name="btnPre" Content="이전폴더" HorizontalAlignment="Left" Margin="10,42,0,0" VerticalAlignment="Top" Width="75" Click="btnPre_Click"/>
<Button x:Name="btnNext" Content="다음폴더" HorizontalAlignment="Left" Margin="170,42,0,0" VerticalAlignment="Top" Width="75" Click="btnNext_Click"/>
<Label x:Name="lblPath" Content="Label" HorizontalAlignment="Left" Margin="10,67,0,0" VerticalAlignment="Top"/>
<Button x:Name="btnPathChange" Content="폴더변경" HorizontalAlignment="Left" Margin="10,98,0,0" VerticalAlignment="Top" Width="75" Click="btnPathChange_Click"/>
<Label x:Name="lbl" Content="C:\Windows\System32\drivers" HorizontalAlignment="Left" Margin="10,123,0,0" VerticalAlignment="Top"/>
<StackPanel x:Name="stp" Height="32" VerticalAlignment="Top" Orientation="Horizontal" />
cs



MainWindow.xaml.cs



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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// 폴더 설정
string basePath = Environment.CurrentDirectory;   // 기본 주소
string[] paths;   // path 배열
int pathNum = 0;   // path 배열 중에서 현재위치
 
public MainWindow()
{
    InitializeComponent();
    pathInit(Environment.CurrentDirectory);
}
 
// 기준폴더 변경
private void pathInit(string path)
{
    paths = path.Split(System.IO.Path.DirectorySeparatorChar);
    pathNum = paths.Length;
    CreateBtn(paths);
}
 
// 스택패널에 버튼 생성
void CreateBtn(string[] paths)
{
    int i = 0;
    stp.Children.Clear();   // 스택패널 초기화
 
    foreach (string path in paths)
    {
        i++;
        Button btn = new Button();   // 버튼 생성
        btn.Name = "btn" + i.ToString();   // 버튼명
 
        // 버튼 생성 - 모양및 색상
        btn.Content = " " + path + "\\ ";   // 버튼 Content
        btn.Tag = i;   // tag
        btn.Background = new SolidColorBrush(Color.FromArgb(255255255255));   // 배경
        btn.BoardBrush = new SolidColorBrush(Color.FromArgb(255255255255));   // 배경
 
        // 버튼 생성 - 이벤트 등록
        btn.Click += new RoutedEventHandler(btnClick);   // 이벤트 등록
 
        stp.Children.Add(btn);   // 스택패널에 넣기
    }
}
 
private void btnClick(object sender, RoutedEventArgs e)
{
    Button btn = sender as Button;
    pathNum = int.Parse(btn.Tag.ToString());
    lblPath.Content = string.Join("\\", paths, 0, pathNum);
}
 
 
// 기준 폴더로 이동
private void btn_Click(object sender, RoutedEventArgs e)
{
    pathNum = paths.Length;
    lblPath.Content = string.Join("\\", paths, 0 , pathNum);
}
 
// 이전 폴더로 이동
private void btnPre_Click(object sender, RoutedEventArgs e)
{
    if (pathNum > 1// 이전폴더가 있으면 이동
        lblPath.Content = string.Join("\\", paths, 0--pathNum);
}
 
// 다음 폴더로 이동
private void btnNext_Click(object sender, RoutedEventArgs e)
{
    if (pathNum < paths.Length)   // 다음폴더 있으면 이동
        lblPath.Content = string.Join("\\", paths, 0++pathNum);
}
 
// 새로운 폴더정보 입력
private void btnPathChange_Click(object sender, RoutedEventArgs e)
{
    string path = @"C:\Windows\System32\drivers";
    pathInit(path);   // 새로운 기준 폴더 설정
    lblPath.Content = string.Join("\\", paths, 0, pathNum);
}
}
cs






728x90
반응형