C# Winform | WebView / Tradingview - Chart (widget)
웹브라우저 이용하여 트레이딩뷰 차트 위젯 사용
Nuget 설치
1. Microsoft.Toolkit.Forms.UI.Controls.WebView 설치
2. 마이그레이션
다음과 같은 error 발생시 마이크레이션으로 해결
3. WebView 사용
1
2
|
webView1.Navigate("https://www.naver.com");
webBrowser1.Navigate("https://www.naver.com");
|
cs |
4. TradingView - 로컬파일
TradingView 위젯
kr.tradingview.com/widget/advanced-chart/
tradingview_1.html
<!DOCTYPE html>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<HTML style="height: 100%; margin: 0px 0px 0px 0px; overflow:hidden;" scroll="no">
<BODY style="height: 100%; margin: 0px 0px 0px 0px; overflow:hidden;" scroll="no">
<!-- TradingView Widget BEGIN -->
<div class="tradingview-widget-container" style="height: 100%; margin: 0px 0px 0px 0px;" scroll="no">
<div id="tradingview_4053a" style="height: 100%; margin: 0px 0px 0px 0px;" scroll="no"></div>
<script type="text/javascript" src="https://s3.tradingview.com/tv.js"></script>
<script type="text/javascript">
var sym = "BINANCE:BTCUSDT";
new TradingView.widget(
{
"autosize": true,
"symbol": sym,
"interval": "D",
"timezone": "Etc/UTC",
"theme": "Dark",
"style": "1",
"locale": "en",
"toolbar_bg": "#f1f3f6",
"enable_publishing": false,
"allow_symbol_change": true,
"save_image": false,
"container_id": "tradingview_4053a"
}
);
</script>
</div>
<!-- TradingView Widget END -->
</BODY>
</HTML>
|
cs |
html파일은 exe파일과 같은 경로에 저장한다.
C#
string StartupPath = System.Windows.Forms.Application.StartupPath;
string chartPath1 = StartupPath + "\\tradingview_1.html";
if (System.IO.File.Exists(chartPath1))
{
webView1.NavigateToLocal("tradingview_1.html");
webBrowser1.Navigate(chartPath1);
}
|
cs |
RESULT
webview에서는 스크립트 오류 없이 잘동작한다.
- webbrowser에서 스크립트 오류를 없애는 방법
ScriptErrorsSuppressed : True 변경 (디폴트 - false)
장점
1. 스크립트 오류없이 위젯 등을 잘가져온다.
2. 스크롤 관리가 편하다.
3. TradingView등에서 Click으로 인한 Focus문제가 없다. (webbrowser에서는 TradingView 종목을 바꾸려면 더블클릭해야 Focus가 잡힌다.)
단점
1. WWAHost.exe 가 할당된다. WebView 객체 1개당 WWAHost 1개가 할당된다.
자세한 내용은 MSDN 참고
docs.microsoft.com/en-us/windows/communitytoolkit/controls/wpf-winforms/webview
2. [1]의 이유로 프로그램이 비정상 종료되면 WWAHost.exe 가 해제되지 않는다.
webView1.Dispose();
|
cs |
직접 비정상 종료시 Dispose 예외처리를 해주어야 한다.
'C# Winform' 카테고리의 다른 글
C# Winform | TabControl / Modern Design UI - #1 (2) | 2020.11.02 |
---|---|
C# Winform | string NewLine 줄바꿈 (0) | 2020.10.28 |
C# Winform | Pie Chart | Angle, Label (0) | 2020.09.02 |
C# Winform | Parse, Convert - System.FormatException (0) | 2020.08.31 |
C# Winform | Json - Read, Write (0) | 2020.08.24 |