C#Windows窗体界面设计_攻击决策项目_03_数据绘图_01_绘制坐标轴_修订ParamsForm

本文档详细介绍了如何在C#的Windows窗体应用中设计坐标轴,包括设置通信和检测距离的TextBox回车事件,以及创建和显示坐标轴的方法。同时,讨论了ParamsForm中参数的修改与OK、Cancel按钮的启用状态控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Author: binzhouweichao@163.com

Copyright (c) 2013, Liu Xiaojian@BIT,  All Rights Reserved.

Date: 2013-10-23

声明:本程序供参考;允许二次开发,但不允许在毫无更改的情况下占为己有。


沿用前面的序号。

7. 绘制坐标轴

pictrueBox1的横纵大小为610*610。

实际的雷区大小,为中心结点到雷结点的距离(Communication Range),加上各雷点的探测距离(Detection Range),然后再乘以2。

也就是说,确定了通信距离和探测距离后,实际的雷区宽高Width和Height就已经确定了。所以,修订ParamsForm中,关于雷区宽高的限制。

打开ParamsForm.cs[设计]文件,将雷点的TextBox和雷区的宽高的TextBox的ReadOnly属性设置为True。


7.1 设置ParamsForm的通信距离和检测距离的TextBox的回车事件

这两个文本框,按回车时触发下方的仿真场景的宽高变化。

7.1.1 首先,设置这两个文本框只能输入数字

自定义一个判断只能输入数字的函数。为了在其他地方也能使用这个函数,我们为项目添加一个新类,用于定义存放这些自定义函数。

为项目AttackDecision添加一个新类,命名为MyFunctions.cs。

为了方便调用,将类声明为静态类。即在类前加static修饰符。

为此类添加第一个静态成员方法,用于限定TextBox输入文本只能是数字,命名为NumberOnly。入口形参为KeyPressEventArgs类型,所以需要在文件头添加包含这个类的库,即using System.Windows.Forms;

函数体参考:http://wenku.baidu.com/view/be25fb300b4c2e3f57276345.html

修改后的MyFunctions.cs如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace AttackDecision
{
    static class MyFunctions
    { 
        //7.1.1 限定TextBox只能输入数字,还包含退格和回车
        public static void NumberOnly(ref KeyPressEventArgs e)
        {
            if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 13) && (e.KeyChar != 8))//数字0-9的ASCII码的范围,13为回车,8为退格
            { e.Handled = true; }
            else
            { e.Handled = false; }
        }
    }
}

7.1.2 设置Communication Range文本框的KeyPress事件

选中CommunicationRange的TextBox,在右下方属性窗口中,选择事件属性,找到KeyPress事件,双击,自动生成mineCommunicationTextBox_KeyPress()事件函数,自动关联此文本框的回车按键触发事件。添加:

        //7.1.2 通信距离文本框回车事件
        private void mineCommunicationTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            MyFunctions.NumberOnly(ref e);//判断输入是否为数字(包括退格和回车)
            if (e.KeyChar == 13)//按回车执行下面的文本变换
            {
                if (mineCommunicationTextBox.Text != "")//前提是此文本非空
                {
                    //仿真场景宽度为(通信距离+探测距离)*2
                    simulationWidthTextBox.Text = (2 * (int.Parse(mineCommunicationTextBox.Text) + int.Parse(mineDetectionTextBox.Text))).ToString();
                    //仿真场景高度与宽度相同
                    simulationHeightTextBox.Text = simulationWidthTextBox.Text;
                }
            }
        }

这样,此文本框只能输入数字(包含退格和回车),在点击回车之后,如果此文本非空,则使得下面的仿真场景的宽高值跟随变化。


7.1.3 同理,设置DetectionRange文本框的回车事件

        //7.1.3 检测距离文本框的回车事件
        private void mineDetectionTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            MyFunctions.NumberOnly(ref e);//判断输入是否为数字(包括退格和回车)
            if (e.KeyChar == 13)//按回车执行下面的文本变换
            {
                if (mineDetectionTextBox.Text != "")//前提是此文本非空
                {
                    //仿真场景宽度为(通信距离+探测距离)*2
                    simulationWidthTextBox.Text = (2 * (int.Parse(mineCommunicationTextBox.Text) + int.Parse(mineDetectionTextBox.Text))).ToString();
                    //仿真场景高度与宽度相同
                    simulationHeightTextBox.Text = simulationWidthTextBox.Text;
                }
            }
        }

7.1.4 顺便,设置一下AttackRange的文本框的KeyPress事件,只
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值