Saturday October 21, 2006 JST

为Live Writer插件使用窗体

同样这篇文章还是跟上一个教程一样是ScøttLiveside发布的,关于制作Windows Live Writer插件的系列教程。你可以到这里查看源教程,下面是我个人的翻译,希望能够对大家有用。

许多Writer的插件都有一个窗体当你在Writer里点击Insert链接的时候,这个窗体将会完成插件的功能并且返回将要显示在Blog文章中的代码或者文字。在这个对话框中,你可以做任何你想插件去做的事,但是在这个事例中我将使它实现简单的功能来显示基础的内容,其余的插件代码让你们自行去编码以达到你们的需求。

打开你的项目(我将继续先前文章中的“MyNewPlugin”的例子),并且新建一个Windows窗体(在这个例子中我将为这个窗体取名没“frmMyFrom”)。这个例子中,我的窗体只有一个文本框、一个插入按钮和一个取消按钮,并且他将实现用户输入一些文字然后当点击"insert"时将其显示在Blog文章中。在你的窗体中,添加一个文本框和两个按钮(我还添加了一个标签去描述这个文本框是干什么的),你所做的应该是像这样:

这个窗体的其它属性都可以根据你的要求改变。除了这个我取名为“txbxText”的文本框,我保留当这个窗体创建时所有原始的命名。

现在我们需要告诉按钮我们将要做些什么。我们从取消按钮开始;在这个窗体的属性中,有一个叫“CancelButton”的属性,设置取消按钮(例子中的"Button2")。对于"Insert"按钮,双击它,Visual Studio将会为你建立一个方法,我们可以添加我们的代码到这个方法里。在我们做这个之前,在这个类的最前端(初始的方法之前),我们需要声明一个字符串变量。所以输入:

string text;

在插件中,所有我们需要这个"Insert"按钮所做的是指定"DialogResult"值,设置"text"变量并且关闭窗体。所以我们需要输入以下代码:

DialogResult = DialogResult.OK;
text = txbxText.Text;
this.Close();

注意我们怎样这个字符串变量"text"等于文本框的文本的。最后我们需要为这个插件建立一个字符串方法来返回字符串变量"text",这个将会从插件主类中调用。

public string getText
        {
            get { return text; }
        }

现在,在我们覆写"CreateContent"方法的主类中,我们需要添加一段新的部分,在这之前我们只有

newContent = "Some text";

我们现在需要告诉插件我们想使用我们的新窗体:

using (frmMyForm form = new frmMyForm())
            {

你应该还记得在上一次文章中我提及关于"DialogResult"部分(我只简单的涉及了一些),这就是它的作用了。一旦我们告诉插件使用窗体,我们需要新建一个新的"DialogResult"去打开我们最近调用的窗体,所以我们在下一行插入:

DialogResult result = form.ShowDialog();

在窗体中当我们点击"Insert"按钮,我们设置"DialogResult"等于DialogResult.OK,这表示一个OK被传入一个对话框中,所以我们可以使用一个"if"语句检查它。在"if"语句之中,我们将设置"newContent"值等于窗体中的"getText"字符串:

if (result == DialogResult.OK)
{
newContent = "You entered:" + form.getText + ".";
}

我们现在需要关闭所有打开的区域(使用一个})。希望你能看到依次出现的这些,"form.getText"是我们设置返回窗体中"text"字符串的公共的字符串,"text"字符串获得文本框的最后将插入到Blog文章中的值。

如果你对这篇文章有疑问的话可以留言,同样的,对于前两篇文章你碰到了棘手的问题,也可以。

你可以到这里下载源代码。

[ AdSense for content ]


1 Comments so far

Gravatar Icon

1. 2007-01-19 我的美味書籤 | Robbin.cc Said:
January 20th, 2007 at 00:34

[...] 5 - 为Live Writer插件使用窗体 - GuaGua's Blog (tags: tip WLW) 分享此文 [...]

Leave a Comment

(若看不到验证码,请重新刷新网页。) Imagecode (required)