问题列表 - 第8877页

为什么不让OnXXX事件提升器方法返回一个值?

假设您有一个使用CancelEventArgs类引发事件的事件提升器方法(OnXXX),使OnXXX方法返回e.Cancel的值有什么问题吗?

例如:

Public Sub ProcessFiles(folder as DirectoryInfo)

    For each file in folder.GetFiles()
        If OnProcessingFile(New FileEventArgs(file)) Then
            .....ProcessFileCode
        Else
            Exit For
        End If
    Next

End Sub

Protected Function OnProcessingFile(ByVal e As FileEventArgs) As Boolean

    RaiseEvent ProcessingFile(Me, e)
    Return Not e.Cancel

End Function
Run Code Online (Sandbox Code Playgroud)

对我来说似乎是一个比这更清洁的解决方案:

Public Sub ProcessFiles(folder as DirectoryInfo)

    Dim e As FileEventArgs

    For each file in folder.GetFiles()

        e = New FileEventArgs(file)
        OnProcessingFile(e)

        If e.Cancel Then
            Exit For
        End If

        .....Process File Code

    Next

End Sub
Run Code Online (Sandbox Code Playgroud)

.net vb.net events

2
推荐指数
1
解决办法
796
查看次数

在C#中重构大型交换机的建议

我在C#/ Winforms中有一个应用程序,它允许用户在网格上放置对象以创建游戏关卡.它有几个工具用于放置瓷砖/灯/门/实体等.目前我只使用枚举来存储当前选定的工具,并有一个switch语句来运行每个工具代码.因为我一直在为应用程序添加更多工具,所以它开始像意大利面一样,有很多重复的代码.

这是我的编辑器类中的鼠标按下功能的缩减版本:

    public void OnEditorViewMouseDown(Point mousePos)
    {
        // Check if the click is out of bounds.
        if (IsLocationOOB(mousePos)) return;

        if (CurrentTool == ToolType.GroundTile)
        {
            // Allow drags along whole tiles only.
            m_DragManager.DragType = DragManager.DragTypeEnum.Tile;
            m_DragManager.StartDrag(mousePos);
        }
        else if (CurrentTool == ToolType.WallTile)
        {
            // Allow drags along grid edges only.
            m_DragManager.DragType = DragManager.DragTypeEnum.Edge;
            m_DragManager.StartDrag(mousePos);
        }
        else if (CurrentTool == ToolType.PostTile)
        {
            // Allow drags along grid points only.
            m_DragManager.DragType = DragManager.DragTypeEnum.Point;
            m_DragManager.StartDrag(mousePos);
        }
        else if (CurrentTool == ToolType.AreaLight)
        {
            // …
Run Code Online (Sandbox Code Playgroud)

c# switch-statement

2
推荐指数
2
解决办法
566
查看次数

ASP.NET MVC视图中的递归

我有一个嵌套的数据对象,用于类别中的一组项目.每个类别都可以包含子类别,子类别的深度没有设置限制.(文件系统将具有类似的结构.)它看起来像这样:

class category
{
    public int id;
    public string name;
    public IQueryable<category> categories;
    public IQueryable<item> items;
}
class item
{
    public int id;
    public string name;
}
Run Code Online (Sandbox Code Playgroud)

我将一个类别列表传递给我的视图IQueryable<category>.我想将类别输出为一组嵌套的无序列表(<ul>)块.我可以嵌套foreach循环,但子类别的深度将受到嵌套foreach块数量的限制.在WinForms中,我使用递归来完成类似的处理来填充a TreeView,但我还没有看到在ASPX MVC视图中使用递归的任何示例.

可以在ASPX视图中完成递归吗?是否有其他视图引擎包含视图输出的递归?

asp.net-mvc recursion

25
推荐指数
4
解决办法
2万
查看次数

如果只有一个选项卡,有没有办法隐藏JTabbedPane的标签栏?

我想要一个类似于Firefox的行为,其中可用选项卡列表仅在至少存在两个选项卡时才会显示.

我还是找不到那样的东西.

我最好的想法是手动更改布局:

  • 如果是一个组件,只需将其添加到周围的面板即可
  • 如果添加了一个组件,则从周围的面板中删除该组件,添加一个JTabbedPane,然后将该组件添加到该窗格中.
  • 如果删除了某个组件并且该窗格中只剩下一个组件,请删除该窗格并添加所包含的组件.

虽然这可能会工作,感觉就像一个黑客或解决方法......

有什么好主意吗?

理想情况下,解决方案应该适用于Java 1.5和1.6 ......但我也很高兴只有1.6的解决方案.

java user-interface swing jtabbedpane

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

路径不是有效的虚拟路径

以下方法采用指向xml文件的路径:

tree.LoadContentFile(path);
Run Code Online (Sandbox Code Playgroud)

我从本地文件系统(或使用Server.MapPath())传递完整路径,但每次我都会收到此错误:

[Path]不是有效的虚拟路径.

编辑:我正在使用Telerik RadTreeView.

示例路径是: "C:\inetpub\wwwroot\sitename\OutlookNavigation\tree.xml"

我究竟做错了什么?

c# asp.net

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

如何检测$ result是mysql_fetch_array($ result)中有效的MySQL结果资源

它是用PHP编写的,

有时当我重启mysql时

将报告:

Debug Warning:line 24 - mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Run Code Online (Sandbox Code Playgroud)

有没有办法检测$ result是否是有效的MySQL结果资源?

php mysql

2
推荐指数
1
解决办法
155
查看次数

对列表中的每对元素进行操作

使用Python,我想比较列表中的每个可能的对.

假设我有

my_list = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

我想对列表中的2个元素的每个组合进行操作(让我们称之为foo).

最终结果应该是相同的

foo(1,1)
foo(1,2)
...
foo(4,3)
foo(4,4)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是手动迭代两次列表,但这似乎不是pythonic.

python

80
推荐指数
2
解决办法
5万
查看次数

Sequence不包含任何元素错误,但我想检查null

我有以下问题:

public Boolean Exists(String userName)
{
    IRepository<User> = new UserRepository();
    User user = userRepository.First(u => u.Name == userName);

    if (user == null) return false;

    // Exists!
    return true;
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我无法检查User对象是否为null.在我到达那里之前,我得到InvalidOperationException一句话" 序列中没有元素 ".

这对我来说似乎很奇怪,特别是因为我不想用异常建立控制流(例如封装在try..catch中并在各个部分中返回true/false).

这里发生了什么?这是正常的还是我的存储库有问题(提示?!)

顺便说一句,这个代码工作完美,当存在我正在寻找的元素(用户检索等).它只在没有匹配时才起作用.

c# linq asp.net-mvc

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

使用EventTrigger设置属性

我希望能够使用EventTrigger设置属性,这有很多问题.

1)EventTriggers仅支持Actions,因此我必须使用storyBoard来设置我的属性.

2)一旦我使用故事板,我有两个选择:

  • 停止:动画停止后,值将恢复为动画开始之前
  • HoldEnd:这会锁定属性,因此代码和用户交互都不能更改动画所持有的属性.

在下面的示例中,我想在单击按钮时将IsChecked属性设置为False,并且我希望用户能够更改IsChecked和/或我希望能够更改代码中的属性.

例:

<EventTrigger
    SourceName="myButton"
    RoutedEvent="Button.Click">
    <EventTrigger.Actions>
        <BeginStoryboard>
            <Storyboard>
                <BooleanAnimationUsingKeyFrames
                    Storyboard.TargetName="myCheckBox"
                    Storyboard.TargetProperty="IsChecked"
                    FillBehavior="Stop">
                    <DiscreteBooleanKeyFrame
                        KeyTime="00:00:00"
                        Value="False" />
                </BooleanAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger.Actions>
</EventTrigger>
Run Code Online (Sandbox Code Playgroud)

我意识到在故事板完成后我可以使用"已完成"事件将值设置为False.但是,在这种情况下,我想在XAML中包含逻辑,因为此逻辑将用于自定义控件,并且仅特定于UI.

wpf xaml triggers eventtrigger

67
推荐指数
4
解决办法
11万
查看次数

像在Firefox中一样切换到Vim中的特定选项卡?

当我按下Alt +#时,如何让Vim切换到某个标签?例如,要进入第三个选项卡,我会按Alt + 3(就像Firefox中的行为一样).

编辑:另外,我如何制作Control + tab == gt,Control + shift + tab == gT

vim

8
推荐指数
2
解决办法
1915
查看次数