2016年11月22日 星期二

7zip batch file (add data into filename)


將 7zip 的壓縮指令寫成 batch file. 方便使用

setlocal
set hh=%time:~0,2%
if "%time:~0,1%"==" " set hh=0%hh:~1,1%
set yyyymmdd_hhmm=%date:~0,4%%date:~5,2%%date:~8,2%_%hh%%time:~3,2%

7z a zip_file%yyyymmdd_hhmm%.7z *.* -x!*.obj -r -x!obj
move zip_file%yyyymmdd_hhmm%.7z ..\backup\


其中 -x 是排除檔案的選項.
 -x!*.obj    --- *.obj 不加入到壓縮檔裡
 -x!obj    --- obj 檔名(或目錄名)不加入到壓縮檔裡

 而 -r 是包含子目錄

C# 呼叫 win32 API

在呼叫的函式前加入 win32API 的宣告

[DllImport("Kernel.dll")]
static extern uint QueryDosDevice(string lpDeviceName, IntPtr lpTargetPath, uint ucchMax);

public int queryFunc()
{   ...
    QueryDosDevice(...);
    ...
}

2016年11月3日 星期四

如何一次設定一個 Click Event Handler 到同一 StackPanel 裡的所有Button

ref : http://stackoverflow.com/questions/37876936/event-handler-formatting-multiple-buttons-wpf?noredirect=1&lq=1

有這樣的做法, 在前面指定 Button.Click :

<StackPanel Button.Click="button_Click" Grid.RowSpan="20">
     <Button Grid.Column="0" Grid.Row="0" FontWeight="Bold" BorderBrush="Black" Style="{StaticResource greenButton}">LT 1</Button>
     <Button x:Name="btn100" Grid.Column="0" Grid.Row="2" Style="{StaticResource greenButton}">100</Button>
     <Button x:Name="btn101" Grid.Column="0" Grid.Row="3" Style="{StaticResource greenButton}">101</Button>
     <Button x:Name="btn102" Grid.Column="0" Grid.Row="4" Style="{StaticResource greenButton}">102</Button>
 </StackPanel>
 
但是這樣會有 null exception 跑出來, 當然可以用 (e.OriginalSource as Button) 來避這個問題, 
也可以在 Style 裡用 EventSetter :
 
<Style x:Key="greenButton" TargetType="Button">
    ...
    <EventSetter Event="Click" Handler="button_Click"/>
</Style> 

WPF Binding

將 TextBox 裡的值隨著 ListBox 的選項改變

<ListBox x:Name="listBox" HorizontalAlignment="Left" Height="100" Margin="401,312,0,0" VerticalAlignment="Top" Width="100" >
    <ListBoxItem>Line 1</ListBoxItem>
    <ListBoxItem>Line 2</ListBoxItem>
</ListBox>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="207,290,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120">
    <TextBox.Text>
        <Binding ElementName="listBox" Path="SelectedItem.Content"></Binding>
    </TextBox.Text>
</TextBox>

如下圖, TextBox 裡顯示 ListBox 選的項目: