Skip to content

Commit 6a3ae7d

Browse files
committed
fix: WinForms导出Rime等格式时传递用户选择的编码类型到转换管道
修复 #398 问题原因:WinForms GUI 在用户选择导出格式(如Rime)时,虽然弹出了配置对话框 让用户选择编码类型(拼音/五笔等),但关闭对话框后从未读取用户的选择,导致 ConversionRequest 中 CodeGenerationOptions.TargetCodeType 始终为 NoCode。 转换管道跳过编码生成 → 所有词条 Code 为 null → Rime 导出器对无编码词条输出 空行 → 最终文件内容为空,但界面仍提示成功。 修复方式: - 新增 _selectedCodeType 字段保存用户选择 - ShowDialog 返回后从各配置表单读取 SelectedCodeType - 将 _selectedCodeType 传入 ConversionRequest.Options.CodeGeneration
1 parent 25efd33 commit 6a3ae7d

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

‎src/IME WL Converter Win/Forms/MainForm.cs‎

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public partial class MainForm : Form
4545
private IFormatExporter? _selectedExporter;
4646

4747
private ChineseConversionMode _chineseConversionMode = ChineseConversionMode.None;
48+
private CodeType _selectedCodeType = CodeType.NoCode;
4849

4950
private FilterConfig filterConfig = new();
5051
private IWordRankGenerator _wordRankGenerator;
@@ -159,9 +160,26 @@ private void cbxTo_SelectedIndexChanged(object sender, EventArgs e)
159160
if (form != null)
160161
{
161162
if (form is SelfDefiningConfigForm selfDefForm)
163+
{
162164
selfDefForm.ShowDialog();
165+
}
163166
else
167+
{
164168
form.ShowDialog();
169+
}
170+
171+
if (form.DialogResult == DialogResult.OK)
172+
{
173+
_selectedCodeType = form switch
174+
{
175+
RimeConfigForm f => f.SelectedCodeType,
176+
XiaoxiaoConfigForm f => f.SelectedCodeType,
177+
ErbiTypeForm f => f.SelectedCodeType,
178+
PinyinConfigForm f => f.SelectedCodeType,
179+
PhraseFormatConfigForm f => f.SelectedCodeType,
180+
_ => CodeType.NoCode
181+
};
182+
}
165183
}
166184
}
167185
}
@@ -380,7 +398,11 @@ private async void btnConvert_Click(object? sender, EventArgs e)
380398
FilterConfig = filterConfig,
381399
Options = new ConversionOptions
382400
{
383-
ChineseConversion = _chineseConversionMode
401+
ChineseConversion = _chineseConversionMode,
402+
CodeGeneration = new CodeGenerationOptions
403+
{
404+
TargetCodeType = _selectedCodeType
405+
}
384406
}
385407
};
386408

0 commit comments

Comments
 (0)