2013-02-19 3 views
2

Я создаю GUI в C# с помощью Windows Form. Для просмотра данных в графическом представлении я использую лицензионный TeeChart для .Net v3. Я хочу реализовать события click click в TeeChart. У меня есть код VB6 для этого, потому что GUI создается в VB6 ранее. Я преобразовал этот код VB6 в C#, но все же у меня есть некоторые проблемы. Я хочу создать щелчок мышью на TeeChart. В приведенном ниже коде показан код Vb6 для создания всплывающего окна мыши на teechart.Как добавить события щелчка мыши в TeeChart для .net

Private Sub TChart1_OnMouseUp(ByVal Button As TeeChart.EMouseButton, ByVal Shift As TeeChart.EShiftState, ByVal x As Long, ByVal y As Long) 

If Not m_objTransfer Is Nothing Then 

    If chkGraphVolume.value = vbChecked And Button = mbRight Then 
     'MsgBox TChart1.Series(0).XValueToText(x) 
     'MsgBox TChart1.Series(0).XValueToText(TChart1.Series(0).XScreenToValue(x)) 

     'MsgBox TChart1.Series(0).XScreenToValue(x) 

     m_dblTempVolFromTo = Round(TChart1.Series(0).XValueToText(TChart1.Series(0).XScreenToValue(x))) 

     mnuPopupChartFrom.Caption = "From " & m_dblTempVolFromTo & " cc" 
     mnuPopupChartTo.Caption = "To " & m_dblTempVolFromTo & " cc" 


     PopupMenu mnuPopupChart 

    ElseIf chkGraphVolume.value = vbUnchecked And Button = mbRight Then 
     Debug.Print CDate(TChart1.Series(0).XScreenToValue(x)) 
     mnuPopupChartFrom.Caption = "From " & CDate(TChart1.Series(0).XScreenToValue(x)) 
     mnuPopupChartTo.Caption = "To " & CDate(TChart1.Series(0).XScreenToValue(x)) 
     m_dtTempTimeFromTo = CDate(TChart1.Series(0).XScreenToValue(x)) 

     PopupMenu mnuPopupChart 

    End If 

End If 
Debug.Print "From " TChart1.Series(0).XValueToText(TChart1.Series(0).XScreenToValue(x)) & " cc 
End Sub 

Я преобразовал выше код в C#

private void TChart1_OnMouseUp(TeeChart.EMouseButton Button, TeeChart.EShiftState Shift, long x, long y) { 
    if (!(m_objTransfer == null)) { 
     if (((chkGraphVolume.value == vbChecked) 
        && (Button == mbRight))) { 
      // MsgBox TChart1.Series(0).XValueToText(x) 
      // MsgBox TChart1.Series(0).XValueToText(TChart1.Series(0).XScreenToValue(x)) 
      // MsgBox TChart1.Series(0).XScreenToValue(x) 
      m_dblTempVolFromTo = Round(TChart1.Series(0).XValueToText(TChart1.Series(0).XScreenToValue(x))); 
      mnuPopupChartFrom.Caption = ("From " 
         + (m_dblTempVolFromTo + " cc")); 
      mnuPopupChartTo.Caption = ("To " 
         + (m_dblTempVolFromTo + " cc")); 
      PopupMenu; 
      mnuPopupChart; 
     } 
     else if (((chkGraphVolume.value == vbUnchecked) 
        && (Button == mbRight))) { 
      Debug.Print; 
      DateTime.Parse(TChart1.Series(0).XScreenToValue(x)); 
      mnuPopupChartFrom.Caption = ("From " + DateTime.Parse(TChart1.Series(0).XScreenToValue(x))); 
      mnuPopupChartTo.Caption = ("To " + DateTime.Parse(TChart1.Series(0).XScreenToValue(x))); 
      m_dtTempTimeFromTo = DateTime.Parse(TChart1.Series(0).XScreenToValue(x)); 
      PopupMenu; 
      mnuPopupChart; 
     } 
    } 
    Debug.Print; 
    ("From " + (TChart1.Series(0).XValueToText(TChart1.Series(0).XScreenToValue(x)) + " cc")); 
} 

Но я не могу использовать приведенный выше код для создания всплывающих окон на TeeChart. Я хочу создать всплывающее меню с щелчком мыши по оси x. поэтому, пожалуйста, помогите мне с этим.

Заранее благодарен.

ответ

1

Спасибо за разъяснение. Я адаптировал свой код, чтобы сделать простой пример, где я использовал ContextMenu с Xscreenvalues, которые вычисляются в MouseUp случае, и я думаю, что вы можете сделать что-то в следующем коде:

ContextMenu ContextMenu1; 
    MenuItem menuItem1; 
    MenuItem menuItem2; 
    public Form1() 
    { 
     InitializeComponent(); 
     ContextMenu1 = new System.Windows.Forms.ContextMenu(); 
     menuItem1 = new System.Windows.Forms.MenuItem(); 
     menuItem2 = new System.Windows.Forms.MenuItem(); 
     ContextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { menuItem1, menuItem2 }); 
     InitializeChart(); 
    } 
    Steema.TeeChart.Styles.Line line; 
    private void InitializeChart() 
    { 
     line = new Line(tChart1.Chart); 
     line.FillSampleValues(); 
     tChart1.MouseUp = new MouseEventHandler(tChart1_MouseUp); 
    } 


    void tChart1_MouseUp(object sender, MouseEventArgs e) 
    { 
     if (e.Button == System.Windows.Forms.MouseButtons.Right) 
     { 
      menuItem1.Index = 0; 
      menuItem1.Text = "From:" Math.Round(tChart1[0].XScreenToValue(e.X)).ToString(); 
      menuItem2.Index = 1; 
      menuItem2.Text = "To:" Math.Round(tChart1[0].XScreenToValue(e.X)).ToString(); 
      ContextMenu1.Show(tChart1, new Point(e.X, e.Y)); 
     } 
    } 

Не мог бы вы пожалуйста, сообщите нам, если предыдущие код работает в конце?

Надеюсь, это поможет.

Спасибо,

+0

Спасибо за ваш ответ. Предыдущий код VB6 работает отлично. Теперь я должен попробовать ваш метод, и я скоро приму вас. – reddy

 Смежные вопросы

  • Нет связанных вопросов^_^