본문 바로가기

C# Winform

C# Winform | WebView / Tradingview - Chart (widget)

by C기억저장소 2020. 10. 16.

C# Winform | WebView / Tradingview - Chart (widget)

웹브라우저 이용하여 트레이딩뷰 차트 위젯 사용

 

  Nuget 설치

 

1. Microsoft.Toolkit.Forms.UI.Controls.WebView 설치

 

2. 마이그레이션

다음과 같은 error 발생시 마이크레이션으로 해결

 

 

3. WebView 사용

 

webBrowser
1
2
webView1.Navigate("https://www.naver.com");
webBrowser1.Navigate("https://www.naver.com");
cs

 

webBrowser와 비교

 

 

4. TradingView - 로컬파일

 

TradingView 위젯

kr.tradingview.com/widget/advanced-chart/

 

기술적 분석용 무료 파이낸셜 차트 위젯

기술적 분석용 고급 기능성 차트 위젯. 실시간 포렉스 데이터. TradingView 가 제공하는 80+ 개의 기술적 지표 및 드로잉 툴.

kr.tradingview.com

 

  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

 

WebView control for Windows Forms and WPF - Windows Community Toolkit

The Windows Community Toolkit provides a version of the UWP web view control that can be used in WPF and Windows Forms applications. This control embeds a view into your application that renders web content using the Microsoft Edge rendering engine.

docs.microsoft.com

2. [1]의 이유로 프로그램이 비정상 종료되면 WWAHost.exe 가 해제되지 않는다.

 

webView1.Dispose();
cs

 

직접 비정상 종료시 Dispose 예외처리를 해주어야 한다.