如何从表单控件将值提供给statusStrip?

安德鲁·特拉克(Andrew Truckle)

这是我的控件的上下文:

/*
Form
    StatusStrip
        ToolStripStatusLabel

    TableLayoutPanel
        MyGenioView
*/

因此,MyGenioView正在拦截MouseMove事件处理程序。橡皮筋矩形已经存在的代码。所以我有:

public void MyMouseMove(Object sender, MouseEventArgs e)
{
    Point ptCurrent = new Point(e.X, e.Y);
    // If we "have the mouse", then we draw our lines.
    if (m_bHaveMouse)
    {
        // If we have drawn previously, draw again in
        // that spot to remove the lines.
        if (m_ptLast.X != -1)
        {
            MyDrawReversibleRectangle(m_ptOriginal, m_ptLast);
        }
        // Update last point.
        m_ptLast = ptCurrent;
        // Draw new lines.
        MyDrawReversibleRectangle(m_ptOriginal, ptCurrent);
    }

    // New code here
}

我无法理解的是我想statusStrip1.statusLabelMyGenioView MouseMove处理程序中设置的值我不知道该怎么做。

我要使用的代码是:

OdGePoint3d pt = GetWorldCoordinates(ptCurrent);
String strCoordinate = String.Format("{0},{1}", ptCurrent.X, ptCurrent.Y);

但是,将其提供给主要表单statusStrip对象的正确方法是什么

谢谢你的帮助。

更新:

知道如何设置statusStrip标签对象的文本。那不是我的问题。我的问题与鼠标处理程序事件的上下文及其与表单的关系有关。请参阅问题开头所描述的控件的上下文。到目前为止的评论还没有考虑到这一点。

这是我创建对象(接收鼠标处理程序)形式的当前位置MyGenioView

private void viewToolStripMenuItem_Click(object sender, EventArgs e)
{
    OdDbDatabase TDDatabase = m_oGenioView.GetDatabase();

    if (m_oGenioViewCtrl != null)
        m_oGenioViewCtrl.DeleteContext();

    tableLayoutPanel.RowCount = 1;
    tableLayoutPanel.ColumnCount = 1;
    m_oGenioViewCtrl = new MyGenioView();
    m_oGenioViewCtrl.TDDatabase = TDDatabase;
    m_oGenioViewCtrl.ResetDevice(true);
    m_oGenioViewCtrl.Dock = DockStyle.Fill;
    m_oGenioViewCtrl.Margin = new Padding(1);
    tableLayoutPanel.Controls.Add(m_oGenioViewCtrl);
}
雷扎·阿盖伊(Reza Aghaei)

您有多种选择来更新状态:

  1. Action<Point>在用户控件中注入一个
  2. StatusUpdate在用户控件中创建事件
  3. 您还可以使用控件的层次结构访问控件,例如,在用户控件this.ParentForm是您的父窗体中,并且可以使用Controlscollection或通过在窗体中将其公开来找到目标控件

前两个选项要好得多,因为将您的控件与窗体分离,并且您的用户控件可以以这种方式用于许多窗体和其他容器。提供更新状态的方法取决于容器。

最好的选择是创建和使用事件。

1-Action<Point>在用户控件中注入

Action<Point>在用户控件中插入一个,并在中使用它MouseMove为此,将其放在用户控件中:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Action<Point> StatusUpdate{ get; set; }

//Don't forget to assign the method to MouseMove event in your user control 
private void UserControl1_MouseMove(object sender, MouseEventArgs e)
{
    if (StatusUpdate!= null)
        StatusUpdate(e.Location);
}

并将此代码放在Form上:

private void Form1_Load(object sender, EventArgs e)
{
    this.userControl11.StatusUpdate= p => this.toolStripStatusLabel1.Text=p.ToString();
}

2-StatusUpdate在用户控件中创建事件

StatusUpdate在用户控件中创建一个事件,并引发MouseMove该事件并使用表单中的事件。您也可以使用MouseMove事件本身。

为此,请将以下代码放在用户控件中:

public event EventHandler<MouseEventArgs> StatusUpdate;
public void OnStatusUpdate(MouseEventArgs e)
{
    var handler = StatusUpdate;
    if (handler != null)
        handler(this, e);
}

//Don't forget to assign the method to MouseMove event in your user control 
private void UserControl1_MouseMove(object sender, MouseEventArgs e)
{
    OnStatusUpdate(e);
}

然后以表格形式,输入以下代码:

//Don't forget to assign the method to StatusUpdate event in form  
void userControl11_StatusUpdate(object sender, MouseEventArgs e)
{
    this.toolStripStatusLabel1.Text = e.Location.ToString();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从表单控件将值提供给statusStrip?

来自分类Dev

如何将GridPattern提供给自定义控件

来自分类Dev

如何将数据从eventSources提供给EventListener

来自分类Dev

如何将集合提供给游标参数?

来自分类Dev

如何设置DynamoDB将数据提供给网站?

来自分类Dev

如何将命令替换提供给“是”命令?

来自分类Dev

将猫的输出提供给rm

来自分类Dev

将MAC地址提供给IT部门

来自分类Dev

将索引编号提供给记录

来自分类Dev

PHP / HTML表单将空白条目提供给MySQL

来自分类Dev

C ++ FMOD Studio无法将值提供给FMOD_DSP_PARAMETER_FFT。Analisys

来自分类Dev

R ggmap ggplot2错误“错误:将离散值提供给连续刻度”

来自分类Dev

如何将数据从一个输入字段提供给 Django 生成表单的两个输入字段?

来自分类Dev

如何将用户的输入值提供给程序中运行的进程

来自分类Dev

如何在Chart.JS中逗号化提供给图表的数据值?

来自分类Dev

如何从两个不同的表中获取值的差异并将值提供给变量?

来自分类Dev

MySQL,如何将UNION的输出提供给WHERE子句

来自分类Dev

Theano:如何将训练数据提供给神经网络

来自分类Dev

如何将列表列表作为参数提供给Robot Framework测试模板

来自分类Dev

如何将$ INPUT_RECORD_SEPARATOR提供给ruby -n -e?

来自分类Dev

如何将PNG作为byte []提供给HtmlImageLoadEventArgs回调?

来自分类Dev

角度2-指令如何将数据提供给主机?

来自分类Dev

如何将.csv训练数据提供给mxnet中的卷积神经网络?

来自分类Dev

如何将raw_input提供给子流程

来自分类Dev

如何将json有效负载提供给Google Map API而不是数组

来自分类Dev

Django通用视图:DetailView如何自动将变量提供给模板?

来自分类Dev

在安装过程中如何将Libnet标头提供给Nemesis?

来自分类Dev

Spring(Spring Boot)如何将CSRF令牌提供给前端?

来自分类Dev

如何将列表元素中的参数提供给类?

Related 相关文章

  1. 1

    如何从表单控件将值提供给statusStrip?

  2. 2

    如何将GridPattern提供给自定义控件

  3. 3

    如何将数据从eventSources提供给EventListener

  4. 4

    如何将集合提供给游标参数?

  5. 5

    如何设置DynamoDB将数据提供给网站?

  6. 6

    如何将命令替换提供给“是”命令?

  7. 7

    将猫的输出提供给rm

  8. 8

    将MAC地址提供给IT部门

  9. 9

    将索引编号提供给记录

  10. 10

    PHP / HTML表单将空白条目提供给MySQL

  11. 11

    C ++ FMOD Studio无法将值提供给FMOD_DSP_PARAMETER_FFT。Analisys

  12. 12

    R ggmap ggplot2错误“错误:将离散值提供给连续刻度”

  13. 13

    如何将数据从一个输入字段提供给 Django 生成表单的两个输入字段?

  14. 14

    如何将用户的输入值提供给程序中运行的进程

  15. 15

    如何在Chart.JS中逗号化提供给图表的数据值?

  16. 16

    如何从两个不同的表中获取值的差异并将值提供给变量?

  17. 17

    MySQL,如何将UNION的输出提供给WHERE子句

  18. 18

    Theano:如何将训练数据提供给神经网络

  19. 19

    如何将列表列表作为参数提供给Robot Framework测试模板

  20. 20

    如何将$ INPUT_RECORD_SEPARATOR提供给ruby -n -e?

  21. 21

    如何将PNG作为byte []提供给HtmlImageLoadEventArgs回调?

  22. 22

    角度2-指令如何将数据提供给主机?

  23. 23

    如何将.csv训练数据提供给mxnet中的卷积神经网络?

  24. 24

    如何将raw_input提供给子流程

  25. 25

    如何将json有效负载提供给Google Map API而不是数组

  26. 26

    Django通用视图:DetailView如何自动将变量提供给模板?

  27. 27

    在安装过程中如何将Libnet标头提供给Nemesis?

  28. 28

    Spring(Spring Boot)如何将CSRF令牌提供给前端?

  29. 29

    如何将列表元素中的参数提供给类?

热门标签

归档