2 albertschr AlbertSchr 于 2015.06.08 15:03 提问

C# 需要在判断输入回车后对某传入的参数进行操作,请问怎么实现?
          private void Mission_KeyDown(object sender, KeyEventArgs e,short i)
        {
            if (e.KeyCode == Keys.Enter)
            {
                                    //对i操作
            }

        }

这样写无法引用,求问有什么办法可以实现?

6个回答

xuwei198603
xuwei198603   2015.06.08 15:29
已采纳

把i这个参数放进TextBox控件的Tag对像中传入
private void Mission_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
TextBox tt = TextBox as sender; //对i操作
short i = (short) tt.tag;
}

    }
AlbertSchr
AlbertSchr 这个方法好!谢谢!
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.08 15:26

在窗体中定义一个成员函数,i
或者,如果你有多个事件挂在一个事件处理函数上,那么可以用sender区分。

AlbertSchr
AlbertSchr 好的!看来只有这么做了,我是觉得如果有不用定义成员函数的方法最好,担心此处定义成员函数会增加代码的复杂性。
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.08 15:10

short i是什么东西?

AlbertSchr
AlbertSchr short是数据类型 不影响问题描述
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.08 15:17

什么不影响问题描述,你这么写根本就没法运行。
KeyDown事件要求的事件处理函数必须是2个参数的,你胡乱加上一个参数还说“不影响”。

AlbertSchr
AlbertSchr 如果不增加参数的情况下应该怎么传递一个数值进方法里呢?我就是想把一个i传进去,在textbox中按下回车的时候对i进行操作。
2 年多之前 回复
AlbertSchr
AlbertSchr   2015.06.08 15:27

我需要i这个参数,但是keydown又必须是两个参数,但是将keydown封装在自定义方法里又无法判断按下的是否enter键。

caozhy
caozhy 假设可以传3个参数,你的i怎么传进去,它从哪里来的
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.08 15:29

再说了,Mission_KeyDown又不是你直接调用的,就算可以定义i,你怎么传进去呢

caozhy
caozhy 回复AlbertSchr: 他回答的不是和我一样么?我告诉你用sender你说不行
2 年多之前 回复
AlbertSchr
AlbertSchr 感谢!你说的方法很好,但正能量-小小 提出的解决方案比较符合我的需求。再次感谢!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片