검색결과 리스트
글
C#에서는 몇몇 클래스를 통하여 간단히 작성할 수가 있다.
그 예제 코드는 다음과 같다. (MSDN에서 발췌 해 왔다. 보면 -_-;; 알 사람들은 다 알 듯..)
[예제]
private const String filename = "Test.xml";
private const String stylesheet = "myStyleSheet.xsl";
XslTransform xslt = new XslTransform();
xslt.Load(stylesheet);
XPathDocument xpathdocument = new XPathDocument(filename);
XmlTextWriter writer = new XmlTextWriter("testResult1.xml", Encoding.UTF8);
writer.Formatting = Formatting.Indented;
xslt.Transform(xpathdocument, null, writer, null);
여기서 보면 xslTransform을 생성하고 해당 xsl 파일을 로드한다.
물론 이것은 사용자가 정의를 해 줘야한다.
필자가 테스트한 myStyleSheet.xsl의 내용은 다음과 같다.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="Students/Student">
<name><xsl:value-of select="Name"></xsl:value-of></name>
<value><xsl:value-of select="Value"></xsl:value-of></value>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Test.xml의 내용은 다음과 같다.
<?xml version="1.0" encoding="utf-8"?>
<Students>
<Student>
<Name>test</Name>
<Value>10</Value>
</Student>
</Students>
이것을 실행하여 새로운 파일을 생성한다면 그 안의 내용은
<name>test</name>
<value>10</value>
로 저장이 된다.
이를 통하여 새로운 데이터들을 정의하여 원하는 방식으로 뽑아 쓸 수 있다.
MSDN은 역시 보물 창고다!! ㅠ_ㅠ
무턱대고 네이버나 이런데서 찾는 사람들이 없기를 바라며..
설정
트랙백
댓글
글
흠.. 일반적으로 닷넷에서 정해진 폼이 있다. 하지만 원하는 메세지들 내용 등을 바꾸자면 아래 예제 코드와 같이 가능하다.
*예제 코드*
public class MessageBoxChange
{
delegate int HookProc(int code, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetWindowsHookEx(int hook, HookProc callback, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll")]
static extern bool UnhookWindowsHookEx(IntPtr hhk);
[DllImport("user32.dll")]
static extern int CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
static extern IntPtr GetDlgItem(IntPtr hDlg, DialogResult nIDDlgItem);
[DllImport("user32.dll")]
static extern bool SetDlgItemText(IntPtr hDlg, DialogResult nIDDlgItem, string lpString);
[DllImport("kernel32.dll")]
static extern uint GetCurrentThreadId();
static IntPtr g_hHook;
string yes;
string no;
//OK
public DialogResult Show(string text, string caption, string ok)
{
this.yes = yes;
this.no = no;
g_hHook = SetWindowsHookEx(5, new HookProc(HookWndProc), IntPtr.Zero, GetCurrentThreadId());
return MessageBox.Show(text, caption, MessageBoxButtons.OK, MessageBoxIcon.Question);
}
//YES NO
public DialogResult Show(string text, string caption, string yes, string no)
{
this.yes = yes;
this.no = no;
g_hHook = SetWindowsHookEx(5, new HookProc(HookWndProc), IntPtr.Zero, GetCurrentThreadId());
return MessageBox.Show(text, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
}
public int HookWndProc(int nCode, IntPtr wParam, IntPtr lParam)
{
IntPtr hChildWnd;
if (nCode == 5)
{
hChildWnd = wParam;
if (GetDlgItem(hChildWnd, DialogResult.OK) != null)
SetDlgItemText(hChildWnd, DialogResult.OK, this.yes);
if (GetDlgItem(hChildWnd, DialogResult.Yes) != null)
SetDlgItemText(hChildWnd, DialogResult.Yes, this.yes);
if (GetDlgItem(hChildWnd, DialogResult.No) != null)
SetDlgItemText(hChildWnd, DialogResult.No, this.no);
UnhookWindowsHookEx(g_hHook);
}
else
CallNextHookEx(g_hHook, nCode, wParam, lParam);
return 0;
}
}
당연히 주의해야할 점은 네임스페이스다.
이들은 Forms를 참조하는 다이얼로그와 P-INVOKE를 이용하기 위한 InteropServices 의 네임스페이스를 참조해야한다.
이를 꼭 명심하자!!
설정
트랙백
댓글
글
2. BackgroundWorker bw = new BackgroundWorker(); 로 생성한다.
3. bw.WorkerSupportsCancellation = true; 설정을 해 준다.
4. bw.DoWork += new DoWorkEventHandler(bw_DoWork); 의 이벤트 핸들러를 생성한다.
5. bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);의 이벤트 핸들러를 생성한다.
6. DoWork 내부에 쓰레드에 이용할 내용을 첨부한다.
7. RunWorkerCompleted 내부에 쓰레드 종료시 이용할 내용을 첨부한다.
if (e.Error != null){} 에러 발생 시 처리
else if (e.Cancelled){bw.CancelAsync();}사용자에 의해 종료 되었을 시 처리
else{}정상 종료 되었을 시 처리
물론 이 BackgroundWorker를 실행하기 위해서는 bw.RunWorkerAnsync(); 처리를 해 줘야한다.
게시글 중 하나 이와 유사한 글이 있다. 그 부분은 단시 쓰는 방법에 대한 것만 나와있다.
쓰레드가 완료 된 처리 내용에 대한 것은 없는 껍데기에 불과 하다는 이야기다.
앞으로 좀 더 잘 알아보고 블로깅을 해야지.. ㅠ_ㅠ 이거 원..
RECENT COMMENT