как добавить события щелчка мыши в TeeChart для .net

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

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

Я преобразовал приведенный выше код в С#

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. поэтому, пожалуйста, помогите мне с этим.

Заранее спасибо.


person reddy    schedule 19.02.2013    source источник


Ответы (1)


Спасибо за ваше разъяснение. Я адаптировал ваш код, чтобы сделать простой пример, в котором я использовал ContextMenu со значениями Xscreen, которые рассчитываются в событии 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));
      }
  }

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

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

Спасибо,

person Sandra Pazos    schedule 19.02.2013
comment
Спасибо за ваш ответ, предыдущий код VB6 работает отлично. Теперь я должен попробовать ваш метод, и я скоро вас получу. - person reddy; 19.02.2013