- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有两个类型为 int
的 List
,我在其中存储名为 Point_X
和 Point_Y
的点坐标。
这是新类中的删除方法:
public void DeletePoint(int x, int y)
{
for (int i = 0; i < Point_X.Count; i++)
{
if ((i == x) && (i == y) || y == -1 || x == -1)
{
Point_X.RemoveAt(i);
Point_Y.RemoveAt(i);
}
else
{
}
}
}
在 x
和 y
中,我得到了我点击的点的索引。如果我添加两个点并单击其中之一,那么我将获得该点的两个索引,例如x
将为 0,y
将为 -1。
现在我正在遍历 Point_X
列表,我需要检查所有情况并将我获得的索引与列表 Point_X
中的索引进行比较,并且Point_Y
然后它应该删除我点击的点。
这个 if
似乎不起作用:if ((i == x) && (i == y) || y == -1 || x == -1)
。如果我在 pictureBox1
中有两个点,然后单击第 2 个点并尝试将其删除,它不会在第一时间被删除。不过,我第二次点击时它确实被删除了。
这是在 Form1
中点击删除点的按钮的代码:
private void button3_Click(object sender, EventArgs e)
{
wireObject1.DeletePoint(cyclicSelectedIndex[0],cyclicSelectedIndex[1]);
button3.Enabled = false;
}
这是我在 pictureBox1
的 MouseDown
事件中点击要选择的点的代码:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
label1.Visible = true;
label4.Visible = true;
// find the index that is closest to the current mouse location
float t = wireObject1.GetIndexByXY(e.X, e.Y, 5);
if (t == -1)
{
button3.Enabled = false;
}
else
{
button3.Enabled = true;
{
selectedIndex = t;
mouseMove = true;
OriginalX = wireObject1._point_X[(int)selectedIndex];
OriginalY = wireObject1._point_Y[(int)selectedIndex];
if (cyclicSelectedIndex.Count() == 2)
{
cyclicSelectedIndex[currentCyclicIndex] = (int)selectedIndex;
currentCyclicIndex++;
if (currentCyclicIndex == 2)
{
currentCyclicIndex = 0;
}
if ((cyclicSelectedIndex[0] == cyclicSelectedIndex[1]) || (cyclicSelectedIndex[0] == -1) || (cyclicSelectedIndex[1] == -1))
{
button2.Enabled = false;
}
else
{
button2.Enabled = true;
}
for (int i = 0; i < wireObject1._connectionstart.Count; i++)
{
if ((wireObject1._connectionstart[i] == cyclicSelectedIndex[0] && wireObject1._connectionend[i] == cyclicSelectedIndex[1]) ||
(wireObject1._connectionstart[i] == cyclicSelectedIndex[1] && wireObject1._connectionend[i] == cyclicSelectedIndex[0]))
{
button2.Enabled = false;
}
}
label13.Text = selectedIndex.ToString();
label13.Visible = true;
label14.Visible = true;
listView1.Items.Add(selectedIndex.ToString()).EnsureVisible();
}
}
}
}
}
问题是新类中的 DeletePoint
方法不会删除我点击的点,除非我点击它两次。
这是合乎逻辑的 if ((i == x) && (i == y))
因为在某些情况下 x
是 1 而 y
为 0,因此变量 (i
) 永远不会同时为 0 和 1,所以我被困在这里。
我不知道如何检查所有情况 - 例如x
是 1,y
是 0。可能还有其他情况要涵盖,但我认为问题出在这个 if
语句中。
x = 1 , y = 1
Point_X >>> [0] = 331.0 , [1] = 212.0
Y 点 >>> [0] = 213.0 , [1] = 212.0
我= 0
当我有两个点并且我点击了第二个点时就是这种情况。它没有在新类的函数中执行任何操作,也没有删除该点。
同样,第一个点没有被移除,它没有进入移除区域。这是我使用 Alexei Levenkov idea sample 进行 If 检查的时候。
现在在 Form1 中,当我单击 pictureBox1 中的一个点时,在鼠标按下事件中我有一个变量(t),我计算新类中该点的索引:
public float GetIndexByXY( int x , int y , float tol)
{
for (idx = 0; idx < Point_X.Count; ++idx)
{
float dx = Point_X[idx] - x;
float dy = Point_Y[idx] - y;
float dist = (float)Math.Sqrt(dx * dx + dy * dy);
if (dist < tol) return idx;
}
return -1;
}
例如,如果我有一个点并单击它,则 variable(t) = 0
然后列表 cyclicSelectedIndex 在 [0] 中有两个单元格/位置,我有 0,在 [1] 中有 -1,currentCyclicIndex 现在是 1,selectedIndex 是 0,在鼠标按下事件中的 Form1 中。鼠标按下事件只是标记我要删除的点。
在 Form1 按钮中单击我单击的位置以删除点:
private void button3_Click(object sender, EventArgs e)
{
wireObject1.DeletePoint(cyclicSelectedIndex[0],cyclicSelectedIndex[1]);
button3.Enabled = false;
pictureBox1.Invalidate();
}
cyclicSelectedIndex[0] = 0 和 cyclicSelectedIndex[1] = -1
所以在 DeletePoint 函数的新类中:
public void DeletePoint(int x, int y)
{
for (int i = 0; i < Point_X.Count; i++)
{
if ((Point_X[i] == x) && (Point_Y[i] == y) || y == -1 || x == -1)
{
Point_X.RemoveAt(i);
Point_Y.RemoveAt(i);
}
else
{
}
}
}
x = 0 和 y = -1
现在我需要从列表中删除索引 0 和 -1:Point_x 和 Point_Y 并且此列表中的每个索引都包含我要删除的 hte 点的坐标。
最佳答案
您很可能想将元素的值 与 x/y 进行比较,而不是索引:
if ((Point_X[i] == x) && (Point_Y[i] == y) || y == -1 || x == -1)
请注意,最好使用具有 X/Y 属性的类(如果您知道/有充分的理由,则为结构)并将它们存储在一个列表中:
class MyPoint { public int X;public int Y;}
List<MyPoint> point = new List<MyPoint>();
关于c# - 我如何检查要删除的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173646/
我需要根据需要动态设置文本区域,但它不想正常工作。 JQuery 会自行检查,但无法检查是否已检查。但是当您在第二个单选框内单击时,始终需要文本区域。我尝试了很多次让它工作,但它仍然有问题。我添加了“
我需要在 Django 中进行 API 调用(某种形式),作为我们所需的自定义身份验证系统的一部分。用户名和密码通过 SSL 发送到特定 URL(对这些参数使用 GET),响应应该是 HTTP 200
我将在我的可移植 C 代码中使用 #warning 来生成编译时警告。但并非所有平台都支持 #warning。有什么方法可以找到该平台是否支持 #warning。 #ifdef warning
我编写了一个函数来检查某个数字是否存在于某个区间内。停止搜索的最佳方法是什么?这个: for (i = a; i <= b; i++) { fi = f(i); if (fi == c) {
我想知道在 c 中是否有一种方法可以检查,例如在 for 函数中,如果变量等于或不等于某些字符,而不必每次都重复进行相等性检查。如果我没记错的话,以这种方式检查相等性是不正确的: if (a == (
我有如下日志功能 void log_error(char * file_name, int line_num, int err_code) { printf("%s:%d:%s\n", fil
使用 ssh-keygen 生成的 key 对在 macOS 上可以有不同的格式。 macOS 可读的标准 PEM ASN.1 对象 SecKey API 带有文本标题的 PEM OpenSSH ke
我正在尝试编写一个 excel if 语句。我不熟悉使用 Excel 具有的所有额外功能。我正在使用一个名为 importXML() 的函数.我正在尝试检查我正在使用的函数是否生成“#VALUE!”错
有没有办法检查是否没有 AIO 写入给定文件?我在我的 Unix 类(class)上制作了一个项目,该项目将是一个上下文无关(基于 UDP)的国际象棋服务器,并且所有数据都必须存储在文件中。应用程序将
我有一个如下所示的函数: public Status execute() { Status status = doSomething(); if (status != Stat
我正在使用 Composer,我不希望 PhpStorm 在 vendor 文件夹上运行任何错误检查或检查,因为它对 vendor/中的某些代码显示误报composer/autoload_static
Chapel 的一个很好的特性是它区分了数组的域和它的分布。检查两个数组是否具有相同的域和分布(通常想要的)的最佳方法是什么? 我能看到的最好的方法是检查 D1==D2和 D1.dist==D2.di
在我的 JavaScript 函数中,我为所有输入、文本区域和选择字段提供实际值作为 initial_value: $('input, textarea, select').each(function
我正在编写一个分解为几个简单函数的 PHP 类。在构造函数中,它调用另一个名为 processFile 的函数。该函数调用 5 个私有(private)函数并进行检查。如果检查失败,它会将消息分配给
这个问题已经有答案了: How to detect if user it trying to open a link in a new tab? (2 个回答) 已关闭 7 年前。 我认为 JavaS
我正在浏览我们的代码库并看到很多这样的测试: declare @row_id int = ... declare @row_attribute string select @row_attribu
我正在声明一个用作比较的函数。我的问题是: 为什么条件充当语句? 为什么第 4 行可以工作,而第 5 行却不行? 我知道这段代码不切实际且未使用,但为什么编译器允许这种语法? 谷歌没有找到答案。但话又
到目前为止,我有一个带有空文本字段的 PHP Kontaktform,并使用以下命令检查了所需的字段: $name = check_input($_POST['name'], "请输入姓名。"); 现
目前,我能想到的合理检查的唯一方法没有臃肿的逻辑: if ( $value > 0 ) { // Okay } else { // Not Okay } 有没有更好的办法? 最佳答案
我正在尝试运行一个脚本,如果 i 存在(意味着存在 i 值,任何值)或其他部分,我希望运行其中的一部分如果i没有值就运行,有人可以启发我吗? 我说的是 for 循环,比如 for (var i=0;
我是一名优秀的程序员,十分优秀!