小编Met*_*d89的帖子

c #datagridview使用FullRowSelect双击行

我的C#应用​​程序中有一个datagridview,用户应该只能点击完整的行.所以我将SelectionMode设置为FullRowSelect.

但是现在我想要一个在用户双击一行时触发的事件.我想在MessageBox中有行号.

我尝试了以下方法:

 this.roomDataGridView.CellContentDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.roomDataGridView_CellCont? ?entDoubleClick); 

 private void roomDataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
      MessageBox.Show(e.RowIndex.ToString());
 }
Run Code Online (Sandbox Code Playgroud)

不幸的是没有任何反应.我究竟做错了什么?

c# events datagridview double-click

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

用于在不规则多边形中找到点的算法

Imagagine我有一个像下面这样的多边形:

不规则多边形

我正在寻找一个C#算法,我可以在任何多边形内找到一个点(可能是中点或也是一个随机点).

为了找到质心,我使用了以下算法:

private Point3d GetPolyLineCentroid(DBObject pObject, double pImageWidth, double pImageHeight)
        {
            Point2d[] pointArray = GetPointArrayOfRoomPolygon(pObject);

            double centroidX = 0.0;
            double centroidY = 0.0;
            double signedArea = 0.0;
            double x0 = 0.0; // Current vertex X
            double y0 = 0.0; // Current vertex Y
            double x1 = 0.0; // Next vertex X
            double y1 = 0.0; // Next vertex Y
            double a = 0.0;  // Partial signed area

            int i = 0;
            for (i = 0; i < pointArray.Length - …
Run Code Online (Sandbox Code Playgroud)

c# algorithm center polygon

13
推荐指数
1
解决办法
6864
查看次数

Log4J动态更改文件路径

我想动态更改log4j日志文件的路径和文件名.

我已经阅读了很多页面,几乎每个人都告诉我应该使用这里的系统属性: 如何动态更改log4j日志文件?

所以我的log4j.properties文件如下所示:

log4j.logger.JDBC_LOGGER=INFO,jdbcTests
log4j.additivity.JDBC_LOGGER = false

log4j.appender.jdbcTests=org.apache.log4j.FileAppender
log4j.appender.jdbcTests.File=${my.log}
log4j.appender.jdbcTests.layout=org.apache.log4j.PatternLayout
log4j.appender.jdbcTests.append = false
log4j.appender.jdbcTests.layout.ConversionPattern=%d{yyyy mm dd HH:mm:ss} %5p %C:Line %L - %m%n
Run Code Online (Sandbox Code Playgroud)

在我的main方法中,我将设置我的新系统属性:

System.setProperty("{my.log", "C:/logfile.log");
Run Code Online (Sandbox Code Playgroud)

但我只是得到一个错误:

log4j:ERROR setFile(null,false) call failed.
java.io.FileNotFoundException: 
    at java.io.FileOutputStream.open(Native Method)....
Run Code Online (Sandbox Code Playgroud)

当我尝试读取我的set系统属性时:

System.out.println(System.getProperty("my.log"));
Run Code Online (Sandbox Code Playgroud)

它返回null.我做错了什么?

java log4j properties dynamic

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

从Windows批处理文件中的字符串中删除第一个和最后一个字符

我的Windows批处理文件中有以下字符串:

"-String"
Run Code Online (Sandbox Code Playgroud)

该字符串还包含字符串开头和结尾的两个引号,如上所述.

我想剥离第一个和最后一个字符,以便我得到以下字符串:

-String
Run Code Online (Sandbox Code Playgroud)

我试过这个:

set currentParameter="-String"
echo %currentParameter:~1,-1%
Run Code Online (Sandbox Code Playgroud)

这打印出应该是的字符串:

-String
Run Code Online (Sandbox Code Playgroud)

但是当我尝试像这样存储编辑过的字符串时,它会失败:

set currentParameter="-String"
set currentParameter=%currentParameter:~1,-1%
echo %currentParameter%
Run Code Online (Sandbox Code Playgroud)

什么都没打印出来.我做错了什么?


这真的很奇怪.当我删除这样的字符时,它可以工作:

set currentParameter="-String"
set currentParameter=%currentParameter:~1,-1%
echo %currentParameter%
Run Code Online (Sandbox Code Playgroud)

打印出来:

-String
Run Code Online (Sandbox Code Playgroud)

但实际上我的批次有点复杂,并且它不起作用.我将展示我编程的内容:

@echo off

set string="-String","-String2"

Set count=0
For %%j in (%string%) Do Set /A count+=1


FOR /L %%H IN (1,1,%COUNT%) DO ( 

    echo .
        call :myFunc %%H
)
exit /b

:myFunc
FOR /F "tokens=%1 delims=," %%I IN ("%string%") Do (

    echo String WITHOUT stripping characters: %%I 
    set currentParameter=%%I
    set currentParameter=%currentParameter:~1,-1%

    echo …
Run Code Online (Sandbox Code Playgroud)

windows character batch-file strip

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

-help选项中的Apache Commons CLI多个参数值名称

我使用Apache Commons CLI来解析命令行参数.

我正在寻找一种在帮助中显示多个参数值名称的方法.以下是选项"startimport"的一个参数的示例:

Option startimport = OptionBuilder
                .withArgName("environment")
                .hasArg()
                .withDescription(
                        "Description")
                .create("startimport");
Run Code Online (Sandbox Code Playgroud)

当我使用-help打印出来:

-startimport <environment>                    Description
Run Code Online (Sandbox Code Playgroud)

那很好.但是,如果我想使用两个参数呢?

Option startimport = OptionBuilder
                .withArgName("firstArg secondArg")
                .hasArgs(2)
                .withDescription("Description")
                .create("startimport ");
Run Code Online (Sandbox Code Playgroud)

解析这两个参数不是问题,但我想在"-help"中输出以下内容:

startimport <firstArg> <secondArg>                    Description
Run Code Online (Sandbox Code Playgroud)

但目前我会得到:

startimport <firstArg secondArg>                    Description
Run Code Online (Sandbox Code Playgroud)

这个问题有适当的解决方案吗?

java command-line arguments command-line-interface apache-commons-cli

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

MyBatis String作为参数

我想在MyBatis中为Select语句使用String参数.我的mapper.xml:

<select id="selectAll" parameterType="String" resultMap="fastXMLResultMap">
        SELECT CREATIONDATE, DOCUMENTID, TITEL, REGTITEL, INFORCEDATE, DOCTYPE
        FROM #{databBaseTable}
</select>
Run Code Online (Sandbox Code Playgroud)

和调用功能:

public List<FastXMLObject> selectAll(String databBaseTable) {

    SqlSession session = sqlSessionFactory.openSession();

    System.out.println("Table: "+databBaseTable);

    try {
        List<FastXMLObject> list = session.selectList("FastXMLObject.selectAll",databBaseTable);
        return list;
    } finally {
        session.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

字符串dataBaseTable是我的数据库的表的名称(谁会想到)因为我想从verious表中动态获取数据.

但不幸的是,这不起作用:错误:ORA-00903:UngültigerTabellenname(表名无效)但它不是.当我打印出"databBaseTable"的值时,它就是表的确切名称.当我将表的名称写入我的mapper.xml而没有变量时,它可以工作.我做错了什么?

java database string mybatis

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

Log4J打印空行到logfile

在java中你可以使用System.out.println()来打印一个空白行,但它如何在日志文件中使用log4j?在那里我还想在日志文件中有一个或多个空行.

我已经阅读了以下内容: log4j如何追加空白行

但这并不是真的有用,因为

logger.debug("\n");
logger.debug("");
Run Code Online (Sandbox Code Playgroud)

您不打印消息,但其他信息(如时间等)(记录器的布局)仍存储在日志文件中.但我只想要一个完整的空行.有人可以帮我吗?

log4j line logfile

5
推荐指数
1
解决办法
8367
查看次数

Windows Batch循环虽然带有动态令牌计数的变量

在我的Windows批处理文件中,我有一些带有不同数量字符串的变量.为了exapmle:

set string="-start" "-end someOption" 
Run Code Online (Sandbox Code Playgroud)

我通过以下方式计算String的数量:

Set count=0
For %%j in (%string%) Do Set /A count+=1
echo.Total count: %count%
Run Code Online (Sandbox Code Playgroud)

输出将是:

Total count: 2
Run Code Online (Sandbox Code Playgroud)

现在我想在我的变量中使用Strings多次启动一个应用程序,并且我想给应用程序提供当前字符串作为参数.我试过这个:

 FOR /L %%H IN (1,1,%COUNT%) DO ( 

    echo %%H
        FOR /F "tokens=%%H " %%I IN ("%string%") Do (
            echo %%I
            rem java -jar app.jar %%I
        )
    )
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这不起作用:这是输出:

当前字符串的数量:1"%H""kann syntaktisch and dieser Stelle nicht verarbeitet werden.(%H""不能在这个地方使用语法)当前字符串的数量:2"%H""kann syntaktisch an dieser Stelle nicht verarbeitet werden.

如何在变量"string"中循环遍历两个字符串?

windows loops dynamic batch-file token

5
推荐指数
1
解决办法
7383
查看次数

替代在C#中调用虚方法

我使用NHibernate作为我的C#pojects,因此我有几个模型类.

让我们假设以下示例:

using System;

namespace TestProject.Model
{
    public class Room
    {
        public virtual int Id { get; set; }
        public virtual string UniqueID { get; set; }
        public virtual int RoomID { get; set; }
        public virtual float Area { get; set; }

    }
}
Run Code Online (Sandbox Code Playgroud)

使用NHibernate映射这些对象到目前为止工作正常.现在我想生成一个新的Room对象,我想将它存储在数据库中.为了避免单独设置每个成员,我向模型类添加了一个新的构造函数.在我写的虚拟成员下面:

public RoomProperty()
{

}


public RoomProperty(int pRoomId, int pArea)
{
        UniqueID = Guid.NewGuid().ToString();
        RoomID = pRoomId;
        Area = pArea;
}
Run Code Online (Sandbox Code Playgroud)

使用FxCop分析我的代码告诉我以下内容:

"ConstructorShouldNotCallVirtualMethodsRule"
This rule warns the developer if any virtual methods are called in …
Run Code Online (Sandbox Code Playgroud)

c# virtual constructor

5
推荐指数
1
解决办法
1540
查看次数

在JSF 2中按Enter键时调用bean中的监听器:inputText

我目前正在编写我的第一个JSF 2页面,我想实现以下内容:当用户在ah:inputText元素中写入内容并按下回车按钮时,另一个h:inputText应该从数据库中更新一些数据.

我的testpage包含以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html">

    <h:body>
        <h3>JSF 2.0 Example</h3>

        <h:form>

           <h:inputText id="inputField" value="#{helloBean.name}">
              <f:ajax render="output" execute="inputField" event="keypress" listener="#{bean.myChangeListener}" /> 
           </h:inputText>
           <h2><h:outputText id="output" value="#{helloBean.name}" /></h2>  

        </h:form>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

Bean包含所有必要的getter和setter以及此函数:

public void myChangeEvent( AjaxBehaviorEvent event) {

        System.out.println( "VALUE CHANGED" );

}
Run Code Online (Sandbox Code Playgroud)

更新2013-12-16:

经过数小时的故障排除后,我发现了为什么在离开文本字段或在文本字段中按Enter键时没有提交任何内容的问题.我的Web应用程序是使用模板创建的,在我的页面标题的模板中是一个'a4j:status'标签,这与JSF 2冲突.删除'a4j:status'行后,当我点击时调用myChangeEvent方法编辑文本字段值后,在网页上的其他位置.

但是存在的问题是,在更改文本字段值后单击enter时整个页面都会被提交.这是因为我在页面底部有一个按钮,用于保存用户输入,因此提交整个页面,这是正常的.但是在文本字段中按Enter键时不应调用此按钮.我必须添加到现有代码中?

更新2013-12-17: 在JS遇到麻烦之后我终于在L-Ray的帮助下工作了(再次感谢).在这里,我将展示使用JQuery的最终版和工作版:

<h:inputText id="inputField" value="#{helloBean.name}" >
    <f:ajax render="output" execute="inputField" event="change"  listener="#{helloBean.myChangeEvent}" />
</h:inputText>
<h2><h:outputText id="output" value="#{helloBean.name}" /></h2>  

<script type="text/javascript">
    $(document).ready(function() {

        $( "#mainForm\\:inputField" ).bind('keypress', …
Run Code Online (Sandbox Code Playgroud)

ajax jsf-2

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

使用MyBatis无法在Java中捕获SQLSyntaxErrorException

我目前面临以下问题:

我编写了一个Java程序来解析XML数据并将数据放入数据库中.因为我使用MyBatis,所以数据库几乎可以是已经存在的每个数据库.我只会告诉你一段代码然后我会解释这个问题.

public void insert(SourceContent content){    
    SqlSession session = sqlSessionFactory.openSession();           
        try {
            session.insert("SourceDocument.insert", content);
            session.commit();
        }   catch (Exception e){
            e.printStackTrace();
        } finally {
            session.close();
        }           
    }
Run Code Online (Sandbox Code Playgroud)

这是我的DAO类,用于调用MyBatis映射文件的sql语句.如果MyBatis的映射配置正确完成,则插入我的内容(这是一个java bean的实例)会很糟糕.但是想象一下,如果我在数据库中重命名一个表,那么连接就会失败,因为配置错误.现在我想赶上即将发生的错误.当我使用上面的语句时:

catch (Exception e){
            e.printStackTrace();
        } 
Run Code Online (Sandbox Code Playgroud)

programm打印正确的异常:###原因:java.sql.SQLSyntaxErrorException:ORA-00942:Tabelle oder查看nicht vorhanden但是我不想捕获所有异常,我只是想捕获SQLSyntaxErrorException,因为我想告诉它用户,他在数据库中的表不可用.但是除了上面看到的正常异常之外,我无法捕获任何其他异常.我希望我能清楚地说出来.有人可以帮我吗?

java exception-handling exception try-catch mybatis

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

将参数传递给JSF中的视图范围bean

让我们想象一下,我的JSF 2应用程序中有两个页面:第一页显示一个对象表(汽车或其他),另一个页面能够显示一个特定对象的详细信息.表页面位于请求范围内,因为每次用户请求时都应重新加载对象.详细信息页面在视图范围内.因此,当我单击表格内的对象时,该对象应显示在详细信息页面中.通过重定向,我可以转到详细信息页面,但详细信息页面为空,因为生成了新的vew.好吧,我可以将范围更改为会话但这会导致其他问题,所以我希望在视图范围内有详细信息页面.有没有办法将参数传递给新生成的视图范围bean?

更新1

这是第一次尝试使用视图参数的代码片段.评论说这不起作用.该值作为请求参数传递,但在目标页面中,该值为null.

表格页面:

<h:button value="Go to details" outcome="targetPage">
     <f:param name="carId" value="This is a test" />
</h:button>
Run Code Online (Sandbox Code Playgroud)

详情页面:

<f:metadata>
    <f:viewParam name="carId" value="#{bean.id}" />
    <f:event type="preRenderView" listener="#{bean.loadData}"/>
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

豆的详细信息页面:

private String id;

public String getId() {
    return id;
}

public void setId( String id ) {
    this.id = id;
}

public void loadData() {
    System.out.println( "Id: " + id );
}
Run Code Online (Sandbox Code Playgroud)

更新2

我发现了自己的错误.元数据部分位于模板文件中.当我将标签放入主文件的详细信息页面时,它可以工作.非常感谢你.

parameters jsf scope view

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