小编Bus*_*kie的帖子

C# 名称“...”在当前上下文中不存在

我是 C# 新手,我尝试从基础知识开始学习,但我坚持上课。我做了第一个例子来练习,它工作正常,但是当我添加一点复杂性时,我收到错误:

“‘iArcher’这个名字在当前上下文中不存在。”

请帮助解释问题所在并提出正确(且简单)的解决方案。

谢谢!

using System;

namespace Units
{
    class Archer
    {
        public int id;
        public int hp;
        public float speed;
        public float attack;
        public float defence;
        public float range;

        public void setProp(int id, int hp, float sp, float at, float de, float ra)
        {
            this.id = id;
            this.hp = hp;
            speed   = sp;
            attack  = at;
            defence = de;
            range   = ra;
        }

        public string getProp()
        {
            string str = "ID        = " + id +      "\n" …
Run Code Online (Sandbox Code Playgroud)

c# syntax-error

1
推荐指数
1
解决办法
3万
查看次数

尝试在焦点/单击时选择 TextBox 中的所有文本

我尝试模仿用户单击用户名字段(例如)时的行为,并且将自动选择所有文本(名称),以便更轻松地用新文本替换它。但是,当用户再次单击该字段时,文本/名称将变为未选中状态,因此用户可以继续从光标写入文本。我确信每个人都知道我想描述什么,因为当我们在文本字段中写入或想要修改其内容时,我们都多次遇到过这种情况......

所以问题是当我使用 Enter focus 事件并应用 SelectAll() 时,根本不起作用!文本仍未选择。我也尝试使用 Click 事件,效果很好,但是第二次单击时遇到了困难,因为所有鼠标单击再次运行 SelectAll() 方法,文本始终仍然处于选中状态。也许我可以使用存储选择状态的全局变量文本和更改状态反之亦然,但如果没有必要,我不想使用任何额外的变量(每个变量都用于所有 TextBox...不)。

应该有一个简单而优雅的解决方案,因为许多应用程序和网站都使用这种行为来使用户的生活更轻松。我阅读了一些论坛并找到了一些解决方案,但它们看起来比我希望的更复杂。

这是我的代码的相关部分......没什么特别的!

    private void G_tbx_canvasSize_Enter(object sender, EventArgs e)
    {
        (sender as TextBox).SelectAll();
    }
Run Code Online (Sandbox Code Playgroud)

这应该以这种方式工作:

  • 用户单击文本框 (TB)
  • 专注于结核病
  • 代码运行并选择所有文本
  • 用户再次点击 TB
  • 由于这已经集中,代码将不会再次运行,因此默认情况下文本会取消选择自身..(我对此进行了测试!)
  • 如果用户点击离开并再次点击 TB,一切都会一次又一次地运行。

请帮忙!我不明白为什么会出现这种情况,这不应该发生......

提前致谢!

c# events textbox click winforms

0
推荐指数
1
解决办法
2530
查看次数

标签 统计

c# ×2

click ×1

events ×1

syntax-error ×1

textbox ×1

winforms ×1